不是线程的最佳名称,但仍然......
我得到了
<?php include('inc/nav_bar.php'); ?>
...
<?php
main code block
?>
我需要将一个变量从“主代码块”打印到“nav_bar”块, 这有什么好办法吗?
到目前为止我找到的唯一解决方案是使用javascript。
答案 0 :(得分: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
编辑:但我同意其他人的意见。更好的解决方案是更改代码设计并使用类/函数。
答案 1 :(得分:0)
您可以使用不同的方式 - 重新排列代码块或使用输出缓冲。
&#39; nav_bar.php&#39;回应任何内容?试试这个:
{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
...
答案 2 :(得分:0)
答案 3 :(得分:-1)
我会选择这种模式:
<?php
// main code block
include('inc/nav_bar.php');
但是如果你想用你自己的技能向前迈进并让你的生活更轻松,那就使用模板(从内到外采用一种方法,而不是相反)。
如果你想使用一些现有的模板引擎,请查看Twig或Smarty。我还强烈推荐Zend Framework,它主要使用基于PHP的模板(你也可以使用其他引擎)和Symfony(主要使用Twig)。