【问题标题】:PHP Template class / engine processing timePHP模板类/引擎处理时间
【发布时间】:2013-07-16 16:33:45
【问题描述】:

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

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

例如:

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

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

我想知道如果这不是它完成的任务很繁重,你肯定会得到真正精美的模板,但不需要很长时间处理首先读取文档,存储它作为一个变量,搜索它的每个变量然后替换它并渲染内容。

或者我的想法是否在这里?

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

【问题讨论】:

  • 为什么不能直接修改this 方法?
  • 那篇文章+1。谢谢!

标签: php template-engine


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多