假设我有一个名为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
。
还有其他简单的方法吗?
不得使用框架。一切从头开始。
答案 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()
需要保留在自己的函数中,即使您只调用一次:它使用函数的变量作用域来保持模板变量与其他变量分开。