有没有相当于

时间:2014-08-02 14:57:45

标签: php jsp include

我有一个PHP页面,其中列出了许多产品,每个产品都由HTML组成 - 取决于产品 - 是否显示某些信息。我将这个“产品HTML”提取到一个单独的PHP文件中,我多次包含它。外部文件为每个产品的属性以及if语句使用变量,以便在未设置属性时,不会呈现部分HTML。

问题是许多属性都有默认值,我每次调用include时都不想设置

PHP中是否有一种机制允许我以下列方式包含另一个PHP文件:

  1. 我可以为文件提供参数
  2. 在我没有提供值时使用参数的默认值
  3. 可以在一个文件中多次使用。
  4. (这是<jsp:include的工作方式。)

    请记住,我不能使用简单变量(据我所知),因为它们在两个单独的包含调用之间保持其值。

1 个答案:

答案 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”文件并像以前一样调用它。