PHP模板变量-smarty样式(或其他更好的样式)和无限深度

PHP模板变量-smarty样式(或其他更好的样式)和无限深度,php,templating,variable-variables,Php,Templating,Variable Variables,我正在开发一个模板系统,首先需要高效,其次需要易于阅读 我以前做过一些几乎相同的事情,但它涉及到preg_match_all-效率低得令人绝望 假设我们有如下HTML: <body> <h1><!--[%variable]--></h1> <b><!--[%array['key']]--></b> <div> <!--[template:templ

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

我以前做过一些几乎相同的事情,但它涉及到preg_match_all-效率低得令人绝望

假设我们有如下HTML:

<body>
     <h1><!--[%variable]--></h1>
     <b><!--[%array['key']]--></b>
     <div>
         <!--[template:templateName]-->
     </div>
</body>
其中parseTemplate()=

问题是,您必须向下传递每个多个级别的
$vars
,如果多个页面使用相同的模板,则要向下传递多个级别的vars

因此,如果有人对如何做到这一点有任何想法,请让我知道,我很感激。我仅仅通过打字就形成了一些想法,但我期待着听到其他人的想法


谢谢你

你只是想在你的应用程序中集成一些类似smarty的功能吗?或者您实际上正在编写自己的模板引擎?我要求的原因是Smarty可以集成,您可以将其用作模板引擎,而无需使用其典型的.TPL文件模板系统。你可以看到的另一个想法是一个全PHP模板引擎。我正在写我自己的“模板引擎”。我设法弄明白我想要什么,我只是看错了方向。谢谢你的建议
<?php
$template[$templateName] = '<body>
     <h1>'.$variable.'</h1>
     <b>'.$array['key'].'</b>
     <div>
         '.parseTemplate('templateName', $varsToPass).'
     </div>
 </body>
 ?>
function parseTemplate($tpl, $vars){
    global $rootDir;

    foreach($vars as $var){
        global $$var;
    }

    require_once($rootDir.'/templates/'.$tpl.'.tpl.php');
    return $template[$tpl];
}