哪种PHP模板引擎语法最好使用?

3
“好的,所以我正在使用MVC开发PHP高级框架,并想知道将动态数据格式化为视图以供PHP解析的最佳方法。
目前,我正在使用以下格式:
控制器加载视图的格式。”
$vars = array();
$vars['EXAMPLE_TEXT'] = "Hello World!";
$this->load->View("view_name", $vars);

“vars”是一个字符串数组,使用键来在视图中传递。
“view_name”视图的格式。
<b>{EXAMPLE_TEXT}</b>

只显示文本:你好,世界!

问题

但是,当我开始使用来自数据库的复杂元素(使用foreach循环)时,我无法找到适合视图的语法,同时使其对开发人员友好并保持PHP解析引擎的速度。

我考虑使用DTD或模式风格,但我真的很想听听任何意见。


2
大部分明智的框架在视图中使用纯PHP代码,不需要任何占位符等。这样既不会增加任何开销,也不会失去任何灵活性。请记住,PHP本身就是一个模板引擎,没有必要在其之上再添加另一个。 - NullUserException
CodeIgniterCakePHPKohana。使用您的方法存在一个可能不标准化语法的缺点,那么所有人都必须学习这种新语法。而且,正如您已经看到的,您不断添加的功能已经由PHP提供了。更不用说模板和其"缓存"版本可能很容易失步。何必麻烦呢? - NullUserException
1
这个问题可能会因为过于离题而被关闭 - 请参阅FAQ。但是,这篇文章可能会引起您的兴趣。它来自Symfony的核心开发者之一Fabien Potencier的博客,他已经从“应该使用PHP”到最终认为“我们应该使用一个模板引擎”的观点转变了。 - halfer
@halfer 的文章非常有趣,我会研究一下 Twig。 - Stephen Fraser
1
@Madara:并不是说不要去做。如果你发现当前选项存在缺陷或不足,那就去做吧。但你是否明白为什么有人会对这个任务产生疑问,尤其是当它与这样一个问题联系在一起时?也许我想说的是,制作一个框架是一项巨大的任务,而且这项任务在独自完成或与一个无法解决看似相对基础的问题的团队合作时更加困难。这个问题很大程度上取决于个人偏好和假定的易用性。我可以想出如何解决它,但这并不意味着对他人来说也同样方便。 - Kai Qing
显示剩余13条评论
1个回答

5
最好的选择是使用PHP本身作为模板引擎,就像这篇文章所描述的那样。
至于视图。我认为你正在遭受经典的Rails妄想症。视图应该是类/对象/实例,其中包含展示逻辑,并负责生成对用户的响应。它可能意味着从多个模板中排列HTML输出,或仅发送HTTP头作为唯一响应。或者可能是一些JSON文件或XML。

链接文章的存档版本:https://archive.md/CiHhD - tereško

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接