提问人:Josh Dredge 提问时间:4/30/2013 更新时间:4/30/2013 访问量:129
PHP 模板变量 - smarty 风格(或其他更好的风格)和无限深度
PHP templating variables - smarty style (or other better style) and unlimited depth
问:
我正在开发一个模板系统,它首先需要高效,其次需要易于阅读。
我以前做过几乎相同的事情,但它涉及preg_match_all——无可救药的低效。
所以,假设我们有这样的 HTML:
<body>
<h1><!--[%variable]--></h1>
<b><!--[%array['key']]--></b>
<div>
<!--[template:templateName]-->
</div>
</body>
正如你所看到的,我们有一个变量、一个数组键和嵌入式模板,它应该用(字面意思)替换为 : 和 。$variable
$array['key']
parseTemplate($templateName)
解释起来很混乱。
我需要访问大多数变量,这似乎是一个问题,特别是因为模板中可以嵌入模板。我现在完全不知所措。虽然像往常一样,在编码时,我睡眠严重不足。
由于我需要语法高效,因此上面的 HTML 语法是不必要的,我目前在我的模板文件中:
<?php
$template[$templateName] = '<body>
<h1>'.$variable.'</h1>
<b>'.$array['key'].'</b>
<div>
'.parseTemplate('templateName', $varsToPass).'
</div>
</body>
?>
其中 parseTemplate() =
function parseTemplate($tpl, $vars){
global $rootDir;
foreach($vars as $var){
global $$var;
}
require_once($rootDir.'/templates/'.$tpl.'.tpl.php');
return $template[$tpl];
}
这样做的问题是,您必须向下传递每个多个级别,如果多个页面使用相同的模板,则要向下传递的变量通过多个级别。$vars
因此,如果有人对如何做到这一点有任何想法,请告诉我,我将不胜感激。我只是通过打字就提出了一些想法,但我期待听到其他人的想法。
谢谢
答: 暂无答案
评论