我正在开发一个模板系统,首先需要高效,其次需要易于阅读。
我之前做过几乎相同的事情,但它涉及 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
通过每个多个级别向下传递,并且如果多个页面使用相同的模板,那么您想要通过多个级别向下传递的变量。
因此,如果有人对如何做到这一点有任何想法,请告诉我,我很感激。我只是通过打字来制定一些想法,但我期待听到其他人的想法。
谢谢