多次包含文件(用于模板)

时间:2012-05-16 11:48:20

标签: php templates

我正在研究一个简单的模板引擎,我想知道是否可以多次包含模板文件,每次渲染模板一次。它基本上是这样的:

function rendering_function_in_rendering_class()
{
    include $path_to_templates . get_class($this) . 'template.php';
}

然后在模板文件中:

<h1>Hello, <?php echo $this->awesomename ?>!</h1>

2 个答案:

答案 0 :(得分:2)

此功能完全符合您的需要:

<?php

function embed($file, $vars) {
  ob_start();
  extract($vars, EXTR_SKIP);
  include($file);
  $content = ob_get_contents();
  ob_end_clean();

  return $content;
}

?>

它将文件路径作为第一个参数和变量的键/值数组,这些变量将被提取到范围中,以便您的模板能够直接在HTML中使用它们,如下所示:

<h1><?php print $title; ?></h1>

答案 1 :(得分:0)

不,PHP中的函数只能定义一次。但是,您可以为每个类创建多个实例:

$this1=new rendering();
$this2=new rendering();
echo $this1->awesomename;
echo $this2->awesomename;

或者在没有初始化类的情况下使用函数instide一个类:

$rendering::rendering_function_in_rendering_class();

这会回答你的问题吗?