设为首页 收藏本站
查看: 991|回复: 0

[经验分享] 细说PHP模板引擎

[复制链接]

尚未签到

发表于 2017-3-24 08:08:28 | 显示全部楼层 |阅读模式
PHP模板引擎,除官方的Smarty之外,其它开源的模板引擎,不下于成百上千。这是有历史的原因的。
     早期,Smarty早其由于性能上的问题,使得全世界众多的PHP开发者,不得不进一步想弄出更好的模板引擎出来。因为,高并发的高性能要求的大型网站,使用SMARTY,简直就是恶梦。
     到目前为止,PHP模板引擎角然处于春秋战国时代,大量的模板引擎,让衩学者不知所措。从我们国内的基本现状来看,普通公司,对项目要求,必须要使用MVC但其性能要求不高的,基本都是Smarty。因为Smarty作为官方的模板引擎,技术比较普及,找一个程序员也较为方便。国内一些开发框架,也主动集成Smarty。这也造成了,一些官方的模板引擎,在国内得不到普及。
    当然,早期,Smarty虽然那么性能低下,却凭借其提供的Cache争夺了市场。
    近其,我对模板引擎对互联网进行一了些搜索,发现,有官方网站的大概有以下一些:
http://dwoo.org/
http://phpsavant.com/
http://www.twig-project.org/
http://www.templateblocks.com/
http://www.invenzzia.org/en/projects/open-power-libraries/open-power-template
http://www.tinybutstrong.com/
http://www.raintpl.com/
http://www.phpte.com/
http://templatelite.sourceforge.net/
http://www.vivvo.net/vte.php
http://www.phpxtemplate.org/HomePage
http://php-sugar.net/
http://www.feverxl.org/template/
http://www.greaterscope.net/projects/Vemplator
http://phptal.org/
http://quickskin.worxware.com/
http://vlib.clausvb.de/vlibtemplate.php
    不过,这只是其中的一部分,有些可能名不副实。并不是真正的模板引擎。
     从这一现状来看,这是PHP官方一个丰当大的失误。人为地定某一个模板引擎作为官方的东西,作为用来挣钱的工具。但却不是最优秀的,也不是完全利用PHP最强大的优势来解决的方案。
     我们可以从以下几点可以看出:第一,PHP最为强大的是其扩展库。模板原本完全可以用扩展库来解决的,但PHP官方没有这么做。也许,PHP官方,用扩展库,实现了数据库链接池,从而失去了一个挣钱的机会,从而后悔,这也只是一种猜测。
    官方不做,不代表民间无人做,目前,最快的模板引擎:Blitz 模板引擎是一个 PHP 扩展,号称是当前最快的模板引擎。这就是说,它的低层是用C++写成的PHP扩展,而不是PHP源码。具休大家可以参考其网站:
http://alexeyrybak.com/blitz/blitz_en.html
    当然,这是目前唯一发现的一个,其它的均是PHP源码的,不管谁,均说它的速度快,但,有些引擎是不需要测的,一看源码就不想用,100K不到的源码,一堆正则表达式,没有明确提供的模板语言控制结构,函数,过滤器,还说速度快,再愉也没什么大用,更何况,正则越多,性能越低下。不知开发者是如何测试的。
    再有就是,很多代码没有很好的错误与异常管理,可不知,这会让开发者,因为你的错误,而要花去多少他们的不该浪费的时间?
    另外,PHP5现在有DOM,有SPL,国外,有QueryPath实现了对HTML的操作,并由此实现了简单的模板引擎功能,然而,再也没有其它人考虑过,用此技术作出一个良好的模板引擎。这也看出,靠做软件外包的,做项目的,只是应付工作时间内会什么,没有人想到去创造或创新。
    另外,所有模板体系,现在千篇一律师,均是{}模板语言标签。却没有XML命名空间标签。真不知PHP官方是怎样想的,在SF.NET中,SMARTY被称作:Struts for php,但它却没有象struts那样,使用XML命名空间标签。虽说,这能提供更大的灵活性,但是,这却失去了很多原本做JAVA的用户。这可以说是市场策略上的一个相当大的败笔。从历史看,微软为了争JAVA的用户,不惜把VB改得象JAVA,还弄出个C#。但反过来看,Zend Framework中的面向对象的模式,以及象SYMFONY的面向对象的模式,均基本与JAVA等同,完全是用接口类扩展模式。(使用这种模式,使得,框架中不得不多出在堆类文件,并不能够充分发控PHP的特长。)
    此外,象CODEIGNITER干脆就不用模板引擎,而告诉用户,使用PHP的另一种语法模式实现与模板引擎相类似的功能。
    Smarty与Zend Framework作为PHP官方的商业模式,实际上,很多却是阻碍了PHP的良好的发展。
    不过,另外一点则是非常遗憾的,那就是,所有的非官方的模板引擎,至今无一个真正形成气候。其主要原因可能有以下几点:
    早期只是满足于速度改良,一些人因类效率提高了,于是就发布了,不在向其中添加页面Cache,而这却是失去市场的一个主要原因。
    第二个重要原因,那就是,很多开发者,都比较初级,并没有好好了解解Zend之类的大型框架,他们面向的应用开发需求,因而不了解这些需求,更不能应用这些开发思想。
    第三个原因,很多框架,没有很好的文档,使用户无所适从。
    第四个原因,很多框架,只是把源码放到网上,没有建立公司,也没有对应的社区,开源,实际根本上,是需要至少一个方面,或是社区,或是公司,否则,无技术支持,从哪里获得用户?就象现在,我给大家列出的模板引擎,肯定是,有官方网站的,要我选用,我也是选有官方网站的。如果有强大的社区,或公司,那更是我的首选。
    侧如我们去phpclasses.org,或sourceforge.net上去搜索一下,肯定是相当多的。你会感慨,这么多的模板引擎呀!!现在还多出了一个googlecode,上面一样也有很多。很多人以为,放上去就可以了。其实,用户希望的仍是服务。
    第五个原因,那就是,很多开发者,并没有用心去做。有很多框架避然有两年多未更新的,这使得用户无法信任。
    第七个原因,虽然有断方网站,却必须要注册后才下载。我不知这些开发者脑子是不是进水了,如果你的东西确实好,Smarty都不用注册直接下载,而你要注册,不给用户有匿名对你开发的东西拿去与其它进行比较的机会,你如何占领市场?
    第八个原因,那就是,开发者,并不能够足够地从用户角度考虑,要使用模板引擎,则要学习一个新的模板语言,并且相当多的模析语言,并不是简单易学。于是,大家都学Smarty,不如就学Smarty,学了你这个不易学的模板语言,到其它地方,并不一定能用上,浪费时间。
    这方面做得最好的,好象就是symfony template,有5分钟的向导,详细的文档,并且,很工整的面向对象的代码,当然TWIG也是一个不错的模板引擎。DWOO虽说改写了SMARTY,但并不比SMARTY高明多少,只能说是两种不同的风格,或体系。当然,不可否认,DWOO比smarty2肯定快,但现在,相对于smarty3,DWOO又如何了呢?
    模板引擎,或许是PHP永远的一个心结!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-354330-1-1.html 上篇帖子: php配置yii框架(转) 下篇帖子: PHP表单及验证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表