将php文件作为模板包含的最佳方法是什么?

时间:2010-06-02 20:35:14

标签: php

我有简单的模板,主要是html,然后通过PHP从SQL中提取一些东西,我想将这个模板包含在另一个php文件的三个不同位置。做这个的最好方式是什么?我可以包含它然后打印内容吗?

模板示例:

Price: <?php echo $price ?>

并且,例如,我有另一个php文件,只有当日期超过SQL日期后的两天时才会显示模板文件。

2 个答案:

答案 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); ?>