不是线程的最佳名称,但仍然......
我有
<?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)。