我有简单的模板,主要是html,然后通过PHP从SQL中提取一些东西,我想将这个模板包含在另一个php文件的三个不同位置。做这个的最好方式是什么?我可以包含它然后打印内容吗?
模板示例:
Price: <?php echo $price ?>
并且,例如,我有另一个php文件,只有当日期超过SQL日期后的两天时才会显示模板文件。
答案 0 :(得分:4)
最好的方法是在关联数组中传递所有内容。
class Template {
public function render($_page, $_data) {
extract($_data);
include($_page);
}
}
构建模板:
$data = array('title' => 'My Page', 'text' => 'My Paragraph');
$Template = new Template();
$Template->render('/path/to/file.php', $data);
您的模板页面可能是这样的:
<h1><?php echo $title; ?></h1>
<p><?php echo $text; ?></p>
Extract是一个非常漂亮的函数,可以将关联数组解包到本地命名空间中,这样你就可以像echo $title;
这样做。
编辑:添加下划线以防止名称冲突,以防您提取包含变量'$ page'或'$ data'的内容。
答案 1 :(得分:0)
将数据放入数组/对象中,并将其作为第二个参数传递给以下函数:
function template_contents($file, $model) {
if (!is_file($file)) {
throw new Exception("Template not found");
}
ob_start();
include $file;
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
然后:
Price: <?php echo template_contents("/path/to/file.php", $model); ?>