我正在尝试制作自己的模板系统,但此时我已陷入困境。我不知道怎么做。
在我的模板文件中,我目前有:
@list $users => $user:
<li>{{$user}}</li>
@endlist
我希望它能够作为foreach工作,在$ this-&gt; users变量中显示用户。
我试过这个,但我被困在这里。我希望有人可以帮助我: - )
到目前为止我的代码(不起作用):
preg_match_all("/\@list(.*)\=\>(.*)\:/is", $e, $hmm);
foreach ( $hmm as $hm):
print_r($hm);exit;
$eval = 'foreach ('.$hm[1].' as '.$hm[2].'):';
eval($eval);
echo ":P";
endforeach;
答案 0 :(得分:1)
我不想吓唬你,但看看Twig_Lexer:
https://github.com/fabpot/Twig/blob/master/lib/Twig/Lexer.php 它是一个令牌解析器,它将Twig语法转换为自己的语言。
但是,关于您的直接要求,这是用于编译For
的{{1}}节点:
https://github.com/fabpot/Twig/blob/master/lib/Twig/Node/For.php
即使您没有完全复制它,即使您使用foreach loop
,它也应该为您提供一些有关如何操作的好线索,例如使用eval
数组存储Twig变量。
答案 1 :(得分:-1)
也许这段代码可以提供一些指导:Old template class
模板:
$template = '{Template.Repeat.Users}
<li>{Template.Var.userName}</li>
{/Template.Repeat}';
PHP:
echo TemplateMananger::parse($template, array(array('userName'= > 'foo'), array('userName' => 'bar'));
无论如何,像Twig这样的模板引擎,不建议自己做。 但是我的班级可以给你一些见解来创建你自己的
祝你好运