在PHP中“渲染”视图文件的最简单/最快捷的方式

时间:2013-03-13 22:03:10

标签: php templates

假设我有一个名为MyView.php的简单视图文件:

<!DOCTYPE html>
<html>
    <head>
        <title><?=$title?></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
                    <?=$cotent?>
    </body>
</html>

我的代码中有一个名为render()的方法:

<?
function render($data)
{

}
?>

我需要从那里拨打MyView.php并将$title$cotent个变量传递给它。

我知道有一种方法可以做到这一点,只需将<title><?=$title?></title>替换为<title>{TITLE}</title>,然后在render($data)中将MyView.php加载到变量中preg_replace()将所有{BLAH}替换为$blah

还有其他简单的方法吗?

不得使用框架。一切从头开始。

1 个答案:

答案 0 :(得分:3)

是。来自我的个人图书馆:

function renderTemplate($tmpl, $__vars=array()) {
    extract($__vars, EXTR_SKIP);
    include($tmpl);
}

renderTemplate("MyView.php", array( "title" => "My Title", "content" => "My Content" ));

如果你想渲染一个字符串,你可以稍微修改一下:

function renderTemplateToString($tmpl, $__vars=array()) {
    ob_start();
    extract($__vars, EXTR_SKIP);
    include($tmpl);
    return ob_get_clean();
}

请注意renderTemplate()需要保留在自己的函数中,即使您只调用一次:它使用函数的变量作用域来保持模板变量与其他变量分开。