PHP模板类/引擎处理时间

时间:2013-07-17 22:28:17

标签: php template-engine

我想在PHP中学习更多关于OOP的知识。所以我决定构建自己的 MVC框架以及在此框架上运行的简单应用程序。

有很多关于这个东西的很棒的教程叫做万维网,但是大多数都写模板/ 视图类,如下所示

例如:

$haystack = file_get_contents($this->file);

foreach ($this->values as $key => $value) {
    $needle = "<@$key>";
    $output = str_replace($needle, $value, $haystack);
}

我想知道如果这不是通过它实现的目标而变得沉重,确定你会得到真正精美的模板,但是不需要花费很长时间流程首先读取文档,存储将其作为变量,搜索将其用于每个变量然后替换它并呈现内容。

我的想法离开这里了吗?

希望有人可以对此有所了解。由于很多人采取这种感觉不对的方法。这是正确的方法,如果没有,在不影响性能的情况下,视图类或模板引擎的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

你必须运行基准来获得明确的答案,但我希望通过简单地制作模板PHP文件来获得最佳性能,即在本地环境中设置模板变量并include“模板“直接存在文件。基准[网站已经改变,不再提供基准(提及删除)]当然表明它比大多数模板引擎更快(不奇怪,因为解释器为你做了所有的解析)。当然,许多人不鼓励使用PHP文件作为模板,因为它不会强制执行任何关注点分离 - 您的模板 是源文件。这是一种可行的方法,但它确实给开发人员带来了所有负担,使他们不会在模板中做错事。

str_replace()方法的实际表现而言,它肯定不是最佳的,但它可能没有您想象的那么糟糕。对于流量较低的网站,它可能会正常工作。对于拥有良好流量的大型网站,可能不是那么多。除了性能方面,这种方法太简单了,不适用于任何非平凡的事情 - 没有缓存,没有输出转义,没有控制结构,没有宏等。

这种模板实际上只是用作练习。它基本上是模板系统最简单的情况。构建生产就绪的模板引擎将需要一些实际的解析,缓存策略以及比这更多的功能,以使其可行并且具有合理的性能。