0

我想更多地了解 PHP 中的 OOP。所以我决定建立自己的MVC 框架和一个在这个框架上运行的简单应用程序。

关于万维网这个东西有很多很棒的教程,但其中大多数编写模板/视图类如下

例如:

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

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

我想知道这是否对它完成的工作来说不是很重,确保你得到真正花哨的模板,但处理第一次读取文档、将其存储为变量、搜索每个文件是否需要很长时间变量然后替换它并渲染内容。

或者我的想法在这里?

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

4

1 回答 1

0

您必须运行基准测试才能获得明确的答案,但我希望通过简单地制作模板 PHP 文件来获得最佳性能,即在本地上下文中设置模板变量并include直接在其中设置“模板”文件。基准测试 [站点已更改并且不再提供基准测试(已删除)] 当然表明它比大多数模板引擎更快(不足为奇,因为解释器会为您完成所有解析)。当然,许多人不鼓励使用 PHP 文件作为模板,因为它不会强制执行任何关注点分离——您的模板一个源文件。这是一种可行的方法,但它确实将所有的负担都放在了开发人员身上,不要在模板中做错事。

就该方法的实际性能而言str_replace(),它肯定不是最优的,但它可能没有你想象的那么糟糕。对于一个低流量的网站,它可能会正常工作。对于流量不错的大型网站,可能不会那么多。除了性能方面,这种方法太简单了,无法用于任何重要的事情——没有缓存、没有输出转义、没有控制结构、没有宏等。

这种类型的模板实际上仅作为练习有用。对于模板系统来说,这基本上是最简单的情况。构建一个生产就绪的模板引擎将需要一些实际的解析、缓存策略以及比这更多的功能,以使其可行和合理的性能。

于 2013-07-17T23:13:33.237 回答