スレッドの最良の名前ではありませんが、それでも...
私は得た
<?php include('inc/nav_bar.php'); ?>
...
<?php
main code block
?>
「メインコードブロック」から「nav_bar」ブロックに1つの変数を出力する必要がありますが、これを行うための良い方法はありますか?
私がこれまでに見つけた唯一の解決策は、javascriptを使用することです。
スレッドの最良の名前ではありませんが、それでも...
私は得た
<?php include('inc/nav_bar.php'); ?>
...
<?php
main code block
?>
「メインコードブロック」から「nav_bar」ブロックに1つの変数を出力する必要がありますが、これを行うための良い方法はありますか?
私がこれまでに見つけた唯一の解決策は、javascriptを使用することです。
私があなたを正しく理解していれば、あなたのnav_bar.phpは、メインコードブロックに変数の値を含むべきものを出力します。
次に、nav_bar.phpの出力を「キャッチ」しようとすることができます。
ob_start();
include('inc/nav_bar.php');
$navBarContent = ob_get_contents();
ob_end_clean();
// main code block: replace some placeholders in $navBarContent with variables content
編集:しかし、私は他の人に同意します。より良い解決策は、コード設計を変更し、クラス/関数を使用することです。
コードブロックを再配置するか、出力バッファリングを使用するなど、さまざまな方法を使用できます。
'nav_bar.php'はコンテンツをエコーしますか?これを試して:
{nav_bar.php}
...
echo "some text %VAR% some text";
...
{main.php}
ob_start();
include 'inc/nav_bar.php';
$content = ob_get_contents();
ob_end_clean();
$var = doSomeCalc();
$content = str_replace('%VAR%', $var, $content);
echo $content;
または、次のように使用できます。
{main.php}
$main_var = doSomeCalc();
...
include 'inc/nav_bar.php';
...
echo "something else";
{nav_bar.php}
...
echo "some text $main_var some text"; // use $main_var defined earlier
...
私はこのパターンに行きます:
<?php
// main code block
include('inc/nav_bar.php');
しかし、自分のスキルで一歩前進して生活を楽にしたい場合は、テンプレートを使用してください(逆ではなく、裏返しからアプローチします)。
既存のテンプレートエンジンを利用したい場合は、TwigまたはSmartyを検索してください。また、主に純粋なPHPベースのテンプレート(他のエンジンも使用できます)とSymfony(主にTwigを使用)を使用するZendFrameworkを強くお勧めします。