印刷

2012-04-25 26 views
4

上記の変数ではないスレッドのための最高の名前が、それでも...印刷

私は「nav_bar」ブロックに「メインコードブロック」から一つの変数を印刷する必要が

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

、 を得ましたこれを行うには良い方法がありますか?

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

+0

についてあなたはクラスでnav_barのコンテンツを持っている、とあなたはそれを呼び出す方法は? like navBar($ mainBlockVariable) –

+0

上記のブロックの下のブロックの変数をPHPで出力したいのですが?それはちょっとやりにくいと思いますか? – snaderss

+1

あなたにとって面白いかもしれないhttp://twig.sensiolabs.org/ – KingCrunch

答えて

1

あなたが正しく理解していれば、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の出力を試みることができる。しかし、私は他の人と同意します。よりよい解決策は、コード設計を変更し、クラス/機能を使用することです。

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; 

ORあなたがこの方法を使用することがあります。

{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 
... 
-1

私はこのパターンのために行くだろう:

<?php 
// main code block 

include('inc/nav_bar.php'); 

しかし、あなたはあなた自身でステップを前方に移動する場合スキルを向上させ、あなたの人生をより楽にして、テンプレートを使用します(これは、逆の代わりに内側からアプローチします)。

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

0

私はあなたのアプリケーションでMVCパターンの使用を開始するのは時間だと思う:)

これは、すべての出力優先順位の問題を解決します。もっとここに

読む: "What is MVC ?"