我有一个PHP页面,其中列出了许多产品,每个产品都由HTML组成 - 取决于产品 - 是否显示某些信息。我将这个“产品HTML”提取到一个单独的PHP文件中,我多次包含它。外部文件为每个产品的属性以及if
语句使用变量,以便在未设置属性时,不会呈现部分HTML。
问题是许多属性都有默认值,我每次调用include时都不想设置
PHP中是否有一种机制允许我以下列方式包含另一个PHP文件:
(这是<jsp:include
的工作方式。)
请记住,我不能使用简单变量(据我所知),因为它们在两个单独的包含调用之间保持其值。
答案 0 :(得分:1)
在PHP中包含文件时,该文件可以访问当前范围。因此,我们需要一个没有变量的“干净”范围,并填充我们需要的范围。最好的方法是使用函数和PHP提取方法:
function product($data){
extract($data);
require(....path to file);
}
现在打电话给:
product(array(
'foo' => 'bar',
....
));
这样,在包含的文件中,你得到了一个带有'bar'值的$ foo变量,没有别的。这就是MVC框架处理视图的方式。
编辑:
<?PHP
function product($data){
extract($data);
?>
<HTML content>
<?PHP
}
?>
现在用这个“require_once”文件并像以前一样调用它。