我会问你同样的问题,我会问任何建议Smarty的人:
为什么要将模板语言添加到PHP,这是一种模板语言?
PHP是一种模板语言.我认为人们会忘记或尝试将其视为纯粹的OO语言,which it isn’t.发挥PHP的优势.不要尝试做它不是的东西.
总而言之,很难回答你的问题,因为你没有说你的模板系统有多简单或复杂,即你打算支持哪些功能.
如果您的模板语言相对简单,那么正则表达式可能就是您的选择.然而,这对一些微不足道的案件不起作用.控制结构的嵌套可能是最常见的.在这种情况下,您需要编写某种形式的基本解析器.
让我们说你所有的模板结构都是这样的块:
{:...:}
因为在HTML页面中相对不太可能发生(尽管为了完整性,您需要满足用户确实想要使用这些字符组合的情况.
您需要扫描文件以获取此类表达式并相应地处理它们.正则表达式可用于查找所有但不一定匹配的表达式,例如条件包括例如:
{:if ...:}
Some conditional content
{:endif:}
为什么?因为这:
{:if *some condition*:}
{:if *some other condition*:}
Some other conditional content
{:endif:}
Some conditional content
{:endif:}
与正则表达式匹配不能可靠地完成,因此您需要将文件解析为某种形式的词法树,然后对其进行处理.