Foreach在我自己的模板系统中

时间:2013-08-07 08:04:39

标签: php

我正在尝试制作自己的模板系统,但此时我已陷入困境。我不知道怎么做。

在我的模板文件中,我目前有:

@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;

2 个答案:

答案 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这样的模板引擎,不建议自己做。 但是我的班级可以给你一些见解来创建你自己的

祝你好运