4

スレッドの最良の名前ではありませんが、それでも...

私は得た

<?php include('inc/nav_bar.php'); ?>
...
<?php
    main code block
?>

「メインコードブロック」から「nav_bar」ブロックに1つの変数を出力する必要がありますが、これを行うための良い方法はありますか?

私がこれまでに見つけた唯一の解決策は、javascriptを使用することです。

4

4 に答える 4

1

私があなたを正しく理解していれば、あなたの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

編集:しかし、私は他の人に同意します。より良い解決策は、コード設計を変更し、クラス/関数を使用することです。

于 2012-04-25T10:15:18.867 に答える
0

コードブロックを再配置するか、出力バッファリングを使用するなど、さまざまな方法を使用できます。

'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
...
于 2012-04-25T10:21:18.867 に答える
0

アプリケーションでMVCパターンを使い始める時が来たと思います:)

これにより、すべての出力優先度の問題が解決されます。

詳細はこちら: 「MVCとは」

于 2012-04-25T10:49:18.763 に答える
-1

私はこのパターンに行きます:

<?php
// main code block

include('inc/nav_bar.php');

しかし、自分のスキルで一歩前進して生活を楽にしたい場合は、テンプレートを使用してください(逆ではなく、裏返しからアプローチします)。

既存のテンプレートエンジンを利用したい場合は、TwigまたはSmartyを検索してください。また、主に純粋なPHPベースのテンプレート(他のエンジンも使用できます)とSymfony(主にTwigを使用)を使用するZendFrameworkを強くお勧めします。

于 2012-04-25T10:37:17.600 に答える