链接:https://www.zhihu.com/question/19674848/answer/168922232
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
其实我非常想吐槽一下,我看楼上的各位都把模版引擎妖魔化了,问一下在座的各位,谁写过php模版引擎?没写过的看完我说的话再喷!写过的,也给我这段话指点错误和意见。
首先,拿smarty来说事,它确实是个经典的php模版引擎,这里说一下它的原理。
其实就是正则替换,把模版中的特定的字符串转换成php代码。
然后把转换过后的模版内容保存起来,下次直接去引用这个编译好的php文件。
这里举个小栗子
比如模版代码如下:
<h1>{$hello}</h1>
经过模版引擎的编译后就生成的内容:
<h1> <?php echo $hello ?> </h1>
其实就是php代码,很多人说效率下降了,那么降在那里了呢?
一是编译的过程,二是对于编译文件的引用和判断。
但是请注意,模版引擎都有一套判断,如果你的模版编译后不去改变,那么就不会去重新编译模版。
那么唯一的开销就是,引用了模版引擎的类库,判断编译文件是否存在,以及对于模版文件和编译文件创建时间的比较。
其实这个开销并不是很大,可以说是微乎其微的开销。
ps:这里要看写法了,有简单的判断,有复杂的判断,对应功能的多于少。
我们知道一个框架里面要判断的东西比这要要多很多。
再说你们都用框架来快捷开发了,还在乎这一点效率吗?
就像已经浪费了一吨的水,还在乎一桶。
那么为什么要使用它?它的好处是什么呢?
首先说一下,正因为它是用正则替换的,基于正则的强大,我们可以实现各种模版语言。
玩过论坛的人都知道ubb吧?不知道ubb你总该写过markdown吧?
这一个个的标签你总记得一两个吧?
比如markdown的
###标题
*加粗*
[链接描述](http://链接地址)
再比如一些论坛里面的
[img=”图片地址”]
[font color=”#000″]
[a]链接地址[/a]
当然如果你连这些都不知道的话,我就怀疑你的年纪了。
其实模版语言也就这回事,不过就是把这些标签转换成了php代码。
你完全可以把它看成是ubb,是简写,而不是一个妖怪,一个影响效率的恶魔。
我也不知道怎么回事,知乎上一大片讨伐的声音。
反正就是老司机们给你们指路,原生最好,别用模版,模版有学习成本这类的话。
但是我觉得你连个ubb都学不会,都觉得是成本,我建议你还是别去学编程了。(这里的话有点激烈,但编程貌似不欢迎不会举一反三的傻子,你没用过php模版,那总用过js模版引擎吧,都没有用过?不屑?)
反正吐槽一件事之前,要先去理解它,而不是人云亦云。你要先去了解事情的真相,它影响效率了,到底怎么影响了?这事情要搞明白!
js也有很多模版引擎,php也有,只不过一个在服务端,一个在客户端。(node.js是在服务端了)
写法也是大同小异的,最经典的就是{hello}这样的写法了,除了一些复杂的模版引擎。
关于php模版引擎的作用,到目前为止,还是非常有用的,如果你正在维护一些商城程序的时候,相信你也不喜欢看到满屏幕的html与php的混写。维护或者二开过zencart系统的同学,可以站出来告诉他们,没有模版引擎,模版代码是个什么样子的。
通过模版引擎,你可以减少html嵌入php的代码量,可以控制html的一些内容,改起来也是十分方便的。
当然纯api开发,是不需要模版引擎的,工作点其实在前端偏多。
以上全是鄙人的见解,也许入不了一些人的眼!这就是黑猫与白猫的区别了!
再次补充一点,看到很多人还是不待见php的模版引擎,我最近还在写js的模版引擎,对于我来说,其实没有任何区别。
评论区都是一大帮的学习成本,哎,我也不想说什么,任何东西存在都有自己的价值。
这底下两条评论还在劝我弃暗投明。废话不多说,上图,我知道你们写代码都喜欢原生的!






转载请注明:落伍老站长 » PHP 模板引擎有多大意义?