我正在研究一个首先需要高效的模板系统,其次需要易于阅读。
之前我做过几乎相同的事情,但它涉及preg_match_all - 无可救药地效率低下。
所以,说我们有这样的HTML:
<body>
<h1><!--[%variable]--></h1>
<b><!--[%array['key']]--></b>
<div>
<!--[template:templateName]-->
</div>
</body>
正如您所看到的,我们有一个变量,一个数组键和嵌入式模板,应该替换为(字面上):$variable
,$array['key']
和parseTemplate($templateName)
。< / p>
令人困惑的解释。
我需要访问大多数变量,这似乎是一个问题,特别是因为模板可以嵌入模板。我现在完全失去了。虽然在编码时像往常一样,我大量睡眠不足。
由于我需要高效的语法,上面的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
向下传递到每个多个级别,如果多个页面使用相同的模板,则需要向下传递多个级别的变量。
所以,如果有人对如何做到这一点有任何想法让我知道,我很感激。我只是通过输入来制定了一些想法,但我期待听到别人的想法。
谢谢