PHP模板变量 - 聪明的风格(或其他更好的风格)和无限的深度

时间:2013-04-29 21:52:05

标签: php templating variable-variables

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

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

所以,如果有人对如何做到这一点有任何想法让我知道,我很感激。我只是通过输入来制定了一些想法,但我期待听到别人的想法。

谢谢

0 个答案:

没有答案