0

我正在开发一个模板系统,首先需要高效,其次需要易于阅读。

我之前做过几乎相同的事情,但它涉及 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通过每个多个级别向下传递,并且如果多个页面使用相同的模板,那么您想要通过多个级别向下传递的变量。

因此,如果有人对如何做到这一点有任何想法,请告诉我,我很感激。我只是通过打字来制定一些想法,但我期待听到其他人的想法。

谢谢

4

0 回答 0