打印变量如上

时间:2012-04-25 10:07:57

标签: php

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

我得到了

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

我需要将一个变量从“主代码块”打印到“nav_bar”块, 这有什么好办法吗?

到目前为止我找到的唯一解决方案是使用javascript。

4 个答案:

答案 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)

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

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

在这里阅读更多内容: "What is MVC ?"

答案 3 :(得分:-1)

我会选择这种模式:

<?php
// main code block

include('inc/nav_bar.php');

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

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