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永远的一个心结!