0

假设我有一个名为 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.

有没有其他简单的方法可以做到这一点?

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

4

1 回答 1

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();
}

Note that renderTemplate() needs to be kept in its own function, even if you're only calling it once: it's using the function's variable scope to keep template variables separate from other variables.

于 2013-03-13T22:07:58.100 回答