上面的打印变量


Print variable above

不是线程的最佳名称,但仍然...

我得到了

<?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
...

我认为是时候开始在应用程序中使用 MVC 模式了:)

这将解决所有输出优先级问题。

在这里阅读更多 :"什么是MVC?"

我会选择这种模式:

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

但是,如果您想用自己的技能向前迈进并使您的生活更轻松,请使用模板(它采用从内到外的方法,而不是相反)。

查找 Twig 或 Smarty 如果你想使用一些现有的模板引擎。我也强烈推荐Zend Framework,它主要使用纯粹基于PHP的模板(你也可以使用其他引擎)和Symfony(主要使用Twig)。