【发布时间】:2011-08-18 11:44:55
【问题描述】:
我正在使用前段时间编写的 PHP 模板引擎。它依赖正则表达式来创建缓存的 PHP 文件。一些语法示例:
{$foo} - regular variable
{$foo.bar} - variable foo that uses the array key 'bar'
{$foo|uppercase} - modifier 'uppercase' that takes 'foo' and applies some method to it
{iteration:users}
Hi there {$users.name}
{/iteration: users}
不胜枚举...解析所有这些涉及到相当多的讨厌的正则表达式。请注意,一个迭代可以在另一个迭代中,依此类推。
最近我看到了使用模板词法分析器的模板引擎,例如 twig、smarty3。我对此有几个问题: - 一般来说,词法分析器的方式不是比使用一些正则表达式来创建缓存的 php 模板慢吗? - 是否有关于如何编写自己的词法分析器来解释某种(模板)语言的好资源(我在谷歌上找不到任何我能理解的东西) - 我应该继续使用正则表达式还是词法分析器值得探索?
【问题讨论】:
-
我知道这不是主题,但是如果您的模板引擎使用逻辑,它的意义何在?你有迭代,你有变量,你有数组,你有使变量大写的修饰符。为什么在 PHP 之上添加另一个层?甚至语法看起来都与 PHP 相似。
-
PHP 是 PHP 最好的模板引擎。在 PHP 中,您有迭代、变量、数组、函数、条件、第三方库、与数据库的连接等。语法与 PHP 完全匹配 :) 说真的,所有模板引擎都很好,但正确实现的 MVC 很多可维护和可扩展。
-
在我工作的公司,模板是由设计师编写的。起初我们尝试使用 php 本身,但相信我,这几乎不是一个选择。大多数设计师可以编写 html/css 和一些健壮的模板语言。