当前位置:  开发笔记 > 编程语言 > 正文

何时使用PHP模板引擎

如何解决《何时使用PHP模板引擎》经验,为你挑选了3个好方法。

我正在建立一个包含大量页面的php网站,我们是一个由9人组成的团队.所以我们只想探索我们何时应该使用PHP模板引擎以及什么时候不应该使用它们.所以我对使用PHP模板引擎的利弊感兴趣,所以我可以决定是否在我的情况下使用它.



1> Bogdan Const..:
PHP是一种模板语言.

根据我迄今为止使用各种模板系统的经验,结论非常简单:使用none.

相反,写PHP应该写!除了echofor/ 之外,永远不要在.html内做任何事情foreach.如果你写一个基于MVC一样设计模式的代码,这变得更加明显:刚echoforeach内部,并解释他们不应该乱用里面的代码的前端?>.

从那以后它一直对我有用.通常我很难解释他们Smarty而不是解释从不惹麻烦.

模板系统也会增加服务器的重量(有时只是一点点,有时你可能会感觉到它).一开始可能看起来过于优化,但我更喜欢保持它尽可能简单.

注意:

例如,Smarty 很难在.html文件中找到,因为我所知道的唯一Smarty语法高亮显示器是一个NetBeans插件,而且非常棒.另一方面,PHP在任何体面的编辑器中突出显示它的语法.前端更容易发现并且不会弄乱.

包起来

缺点(用于使用模板系统)

增加服务器负载(更轻或更重,无所谓 - 你可以看到它)

导致不良做法(逻辑包含在模板语言语法中)

没有语法突出显示模板语言的语法 - 更难发现(对于编码器和前端)

花时间学习它并教给前端

更难向前端团队解释(我已经教过基本的PHP几次前端 - 而更多的人已经能够编写他们自己的'初级级'PHP;我从未教过前端Smarty,所​​以他们可以做除了{$var})

使您避免真正的问题:逻辑和表示分离!

为您的项目增加额外的重量

优点(使用模板系统)

极度无聊(可能是唯一有效的论据)

模板系统更换

逻辑和表示分离(我建议MVC用于此任务以及它为其他开发领域提供的专业人员:更容易维护,抽象数据库等)

强迫自己只在视图中写入echo并迭代迭代:foreach并且for应该完成99%的迭代需求; 你也可以使用whiledo while


我不同意你所说的很多内容.我不得不说你看起来有点偏颇.我已经使用Twig大约一年了,我推荐它.不是说你必须使用它,或者它应该在所有情况下使用,但肯定有好处.像自动转义以防止XSS等.你所说的关于保持视图简单,限制PHP使用的说法是好的,但肯定这意味着模板引擎的专业必须是只有一组有限的命令/语句你可以使用.

2> webbiedave..:

对我来说,在决定是否应该使用单独的模板引擎或仅使用PHP进行模板化时,它总是归结为:

何时使用模板引擎

必须限制(沙箱)可以在模板中运行的代码时.


何时不使用模板引擎

所有其他时间.



这正是Smarty在这里兼职工作的原因(唯一的原因).我们需要从数据库中运行动态内容,并考虑到安全性和可读性.我们使用很少的令牌,客户端复制/粘贴到由Smarty解析的WYSIWYG,如{date}和{article_stub id ="34"}.如果有人知道更好的方法,我会全力以赴.

3> Shauna..:

PHP纯粹主义者会告诉你PHP本身就是一个模板引擎.我认为自己是这个问题的纯粹主义者,并建议只使用PHP.它甚至还有if和loop块的替代语法,它们几乎是为模板式可读性而设计的.

然而,有些人仍然喜欢使用模板引擎,例如Smarty.如果您选择该路线,有很多事情需要考虑:

谁将维护模板?如果维护模板的人已经知道PHP,那么让他们学习一个新的伪PHP模板引擎是没有意义的.如果他们不了解PHP,那么它仍然有问题,这取决于他们的背景,因为大多数模板引擎只是实现了一个与PHP标签不同的语法(例如<% %>)

你的模板有多复杂?一些模板引擎在你可以在模板中做的事情是非常严格的限制(强迫你把所有东西都放在控制器中,有些几乎到了无用或不必要的跳跃),而其他模板引擎就像原始PHP一样宽松(许多会争辩说模板引擎的目的.

效率和速度有多重要?模板引擎增加了开销.期.将自定义标记转换为PHP标记需要资源.它们添加了多少以及它的重要程度取决于许多因素(包括引擎本身).如果您需要从您的网站获得更快的速度,那么我会将模板引擎投票给第一个.

正如我所说,我还建议使用PHP作为模板"引擎",但要注意一些陷阱.主要是,在模板中添加多于必要的逻辑非常容易.确保您的规则只包含echo,for/foreach和基本if块(例如if is_admin()等),并确保强制执行.


当然,但这几乎可以忽略不计,因为每次编辑只发生一次.然而,查找和读取缓存会增加开销,但不会真正将标记转换为php(创建缓存文件).
`将自定义标记转换为PHP标记需要资源` - 大多数模板系统都具有(或应该具有)良好的缓存功能.Smarty编译成纯PHP.
推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有