我正在建立一个包含大量页面的php网站,我们是一个由9人组成的团队.所以我们只想探索我们何时应该使用PHP模板引擎以及什么时候不应该使用它们.所以我对使用PHP模板引擎的利弊感兴趣,所以我可以决定是否在我的情况下使用它.
根据我迄今为止使用各种模板系统的经验,结论非常简单:使用none.
相反,写PHP应该写!除了echo
和for
/ 之外,永远不要在.html内做任何事情foreach
.如果你写一个基于MVC一样设计模式的代码,这变得更加明显:刚echo
和foreach
内部,并解释他们不应该乱用里面的代码的前端和
?>
.
从那以后它一直对我有用.通常我很难解释他们Smarty而不是解释从不惹麻烦.
模板系统也会增加服务器的重量(有时只是一点点,有时你可能会感觉到它).一开始可能看起来过于优化,但我更喜欢保持它尽可能简单.
注意:
例如,Smarty 很难在.html文件中找到,因为我所知道的唯一Smarty语法高亮显示器是一个NetBeans插件,而且非常棒.另一方面,PHP在任何体面的编辑器中突出显示它的语法.前端更容易发现并且不会弄乱.
包起来
增加服务器负载(更轻或更重,无所谓 - 你可以看到它)
导致不良做法(逻辑包含在模板语言语法中)
没有语法突出显示模板语言的语法 - 更难发现(对于编码器和前端)
花时间学习它并教给前端
更难向前端团队解释(我已经教过基本的PHP几次前端 - 而更多的人已经能够编写他们自己的'初级级'PHP;我从未教过前端Smarty,所以他们可以做除了{$var}
)
使您避免真正的问题:逻辑和表示分离!
为您的项目增加额外的重量
极度无聊(可能是唯一有效的论据)
逻辑和表示分离(我建议MVC用于此任务以及它为其他开发领域提供的专业人员:更容易维护,抽象数据库等)
强迫自己只在视图中写入echo
并迭代迭代:foreach
并且for
应该完成99%的迭代需求; 你也可以使用while
和do while
对我来说,在决定是否应该使用单独的模板引擎或仅使用PHP进行模板化时,它总是归结为:
何时使用模板引擎
必须限制(沙箱)可以在模板中运行的代码时.
何时不使用模板引擎
所有其他时间.
PHP纯粹主义者会告诉你PHP本身就是一个模板引擎.我认为自己是这个问题的纯粹主义者,并建议只使用PHP.它甚至还有if和loop块的替代语法,它们几乎是为模板式可读性而设计的.
然而,有些人仍然喜欢使用模板引擎,例如Smarty.如果您选择该路线,有很多事情需要考虑:
谁将维护模板?如果维护模板的人已经知道PHP,那么让他们学习一个新的伪PHP模板引擎是没有意义的.如果他们不了解PHP,那么它仍然有问题,这取决于他们的背景,因为大多数模板引擎只是实现了一个与PHP标签不同的语法(例如<% %>
)
你的模板有多复杂?一些模板引擎在你可以在模板中做的事情是非常严格的限制(强迫你把所有东西都放在控制器中,有些几乎到了无用或不必要的跳跃),而其他模板引擎就像原始PHP一样宽松(许多会争辩说模板引擎的目的.
效率和速度有多重要?模板引擎增加了开销.期.将自定义标记转换为PHP标记需要资源.它们添加了多少以及它的重要程度取决于许多因素(包括引擎本身).如果您需要从您的网站获得更快的速度,那么我会将模板引擎投票给第一个.
正如我所说,我还建议使用PHP作为模板"引擎",但要注意一些陷阱.主要是,在模板中添加多于必要的逻辑非常容易.确保您的规则只包含echo
,for/foreach
和基本if
块(例如if is_admin()
等),并确保强制执行.