不是一個線程,但仍然是最好的名字......打印可變上述
我
<?php include('inc/nav_bar.php'); ?>
...
<?php
main code block
?>
我需要從「主代碼塊」打印一個變量「nav_bar」塊, 有沒有什麼好辦法做到這一點?
到目前爲止我發現的唯一解決方案就是使用javascript。
不是一個線程,但仍然是最好的名字......打印可變上述
我
<?php include('inc/nav_bar.php'); ?>
...
<?php
main code block
?>
我需要從「主代碼塊」打印一個變量「nav_bar」塊, 有沒有什麼好辦法做到這一點?
到目前爲止我發現的唯一解決方案就是使用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。我還強烈推薦Zend Framework,它主要使用純粹基於PHP的模板(您也可以使用其他引擎)和Symfony(主要使用Twig)。
如何你有你的一類nav_bar的內容,你那算什麼?像navBar($ mainBlockVariable) – 2012-04-25 10:10:05
你想從上面的塊中用PHP打印出一個變量。如果你不這麼想,那將是不可能的。 – snaderss 2012-04-25 10:10:16
可能對你有意思http://twig.sensiolabs.org/ – KingCrunch 2012-04-25 10:10:38