|
PHP模板引擎,除官方的Smarty之外,其它開源的模板引擎,不下于成百上千。這是有歷史的原因的。 早期,Smarty早其由于性能上的問題,使得全世界眾多的PHP開發(fā)者,不得不進(jìn)一步想弄出更好的模板引擎出來。因?yàn)?,高并發(fā)的高性能要求的大型網(wǎng)站,使用SMARTY,簡直就是惡夢(mèng)。 到目前為止,PHP模 板引擎角然處于春秋戰(zhàn)國時(shí)代,大量的模板引擎,讓衩學(xué)者不知所措。從我們國內(nèi)的基本現(xiàn)狀來看,普通公司,對(duì)項(xiàng)目要求,必須要使用MVC但其性能要求不高 的,基本都是Smarty。因?yàn)镾marty作為官方的模板引擎,技術(shù)比較普及,找一個(gè)程序員也較為方便。國內(nèi)一些開發(fā)框架,也主動(dòng)集成Smarty。這 也造成了,一些官方的模板引擎,在國內(nèi)得不到普及。 當(dāng)然,早期,Smarty雖然那么性能低下,卻憑借其提供的Cache爭奪了市場。 近其,我對(duì)模板引擎對(duì)互聯(lián)網(wǎng)進(jìn)行一了些搜索,發(fā)現(xiàn),有官方網(wǎng)站的大概有以下一些: httpdwoo.org httpwww.twig-project.org httpwww.invenzzia.orgenprojectsopen-power-librariesopen-power-template httptemplatelite.sourceforge.net httpwww.vivvo.netvte.php httpwww.phpxtemplate.orgHomePage httpphp-sugar.net httpwww.feverxl.orgtemplate httpwww.greaterscope.netprojectsVemplator httpphptal.org httpvlib.clausvb.devlibtemplate.php 不過,這只是其中的一部分,有些可能名不副實(shí)。并不是真正的模板引擎。 從這一現(xiàn)狀來看,這是PHP官方一個(gè)豐當(dāng)大的失誤。人為地定某一個(gè)模板引擎作為官方的東西,作為用來掙錢的工具。但卻不是最優(yōu)秀的,也不是完全利用PHP最強(qiáng)大的優(yōu)勢(shì)來解決的方案。 我們可以從以下幾點(diǎn)可以看出:第一,PHP最為強(qiáng)大的是其擴(kuò)展庫。模板原本完全可以用擴(kuò)展庫來解決的,但PHP官方?jīng)]有這么做。也許,PHP官方,用擴(kuò)展庫,實(shí)現(xiàn)了數(shù)據(jù)庫鏈接池,從而失去了一個(gè)掙錢的機(jī)會(huì),從而后悔,這也只是一種猜測。 官方不做,不代表民間無人做,目前,最快的模板引擎:Blitz 模板引擎是一個(gè) PHP 擴(kuò)展,號(hào)稱是當(dāng)前最快的模板引擎。這就是說,它的低層是用C++寫成的PHP擴(kuò)展,而不是PHP源碼。具休大家可以參考其網(wǎng)站: 當(dāng)然,這是目前唯一發(fā)現(xiàn)的一個(gè),其它的均是PHP源碼的,不管誰,均說它的速度快,但,有些引擎是不需要測的,一看源碼就不想用,100K不到的源碼,一堆正則表達(dá)式,沒有明確提供的模板語言控制結(jié)構(gòu),函數(shù),過濾器,還說速度快,再愉也沒什么大用,更何況,正則越多,性能越低下。 再有就是,很多代碼沒有很好的錯(cuò)誤與異常管理,可不知,這會(huì)讓開發(fā)者,因?yàn)槟愕腻e(cuò)誤,而要花去多少他們的不該浪費(fèi)的時(shí)間, 另外,PHP5現(xiàn)在有DOM,有SPL,國外,有QueryPath實(shí)現(xiàn)了對(duì)HTML的操作,并由此實(shí)現(xiàn)了簡單的模板引擎功能,然而,再也沒有其它 人考慮過,用此技術(shù)作出一個(gè)良好的模板引擎。這也看出,靠做軟件外包的,做項(xiàng)目的,只是應(yīng)付工作時(shí)間內(nèi)會(huì)什么,沒有人想到去創(chuàng)造或創(chuàng)新。 另外,所有模板體系,現(xiàn)在千篇一律師,均是{}模板語言標(biāo)簽。卻沒有XML命名空間標(biāo)簽。真不知PHP官方是怎樣想的,在SF.NET中,SMARTY被稱作:Struts for php, 但它卻沒有象struts那樣,使用XML命名空間標(biāo)簽。雖說,這能提供更大的靈活性,但是,這卻失去了很多原本做JAVA的用戶。這可以說是市場策略上 的一個(gè)相當(dāng)大的敗筆。從歷史看,微軟為了爭JAVA的用戶,不惜把VB改得象JAVA,還弄出個(gè)C#。但反過來看,Zend Framework中的面向?qū)ο蟮哪J?,以及象SYMFONY的面向?qū)ο蟮哪J剑九cJAVA等同,完全是用接口類擴(kuò)展模式。(使用這種模式,使得, 框架中不得不多出在堆類文件,并不能夠充分發(fā)控PHP的特長。) 此外,象CODEIGNITER干脆就不用模板引擎,而告訴用戶,使用PHP的另一種語法模式實(shí)現(xiàn)與模板引擎相類似的功能。 Smarty與Zend Framework作為PHP官方的商業(yè)模式,實(shí)際上,很多卻是阻礙了PHP的良好的發(fā)展。 不過,另外一點(diǎn)則是非常遺憾的,那就是,所有的非官方的模板引擎,至今無一個(gè)真正形成氣候。其主要原因可能有以下幾點(diǎn): 早期只是滿足于速度改良,一些人因類效率提高了,于是就發(fā)布了,不在向其中添加頁面Cache,而這卻是失去市場的一個(gè)主要原因。 第二個(gè)重要原因,那就是,很多開發(fā)者,都比較初級(jí),并沒有好好了解解Zend之類的大型框架,他們面向的應(yīng)用開發(fā)需求,因而不了解這些需求,更不能應(yīng)用這些開發(fā)思想。 第三個(gè)原因,很多框架,沒有很好的文檔,使用戶無所適從。 第四個(gè)原因,很多框架,只是把源碼放到網(wǎng)上,沒有建立公司,也沒有對(duì)應(yīng)的社區(qū),開源,實(shí)際根本上,是需要至少一個(gè)方面,或是社區(qū),或是公司,否則, 無技術(shù)支持,從哪里獲得用戶,就象現(xiàn)在,我給大家列出的模板引擎,肯定是,有官方網(wǎng)站的,要我選用,我也是選有官方網(wǎng)站的。如果有強(qiáng)大的社區(qū),或公司,那 更是我的首選。 側(cè)如我們?nèi)?phpclasses.org, 或 sourceforge.net 上去搜索一下,肯定是相當(dāng)多的。你會(huì)感慨,這么多的模板引擎呀~~現(xiàn)在還多出了一個(gè) googlecode,上面一樣也有很多。很多人以為,放上去就可以了。 第五個(gè)原因,那就是,很多開發(fā)者,并沒有用心去做。有很多框架避然有兩年多未更新的,這使得用戶無法信任。 第七個(gè)原因,雖然有斷方網(wǎng)站,卻必須要注冊(cè)后才下載。我不知這些開發(fā)者腦子是不是進(jìn)水了,如果你的東西確實(shí)好,Smarty都不用注冊(cè)直接下載,而你要注冊(cè),不給用戶有匿名對(duì)你開發(fā)的東西拿去與其它進(jìn)行比較的機(jī)會(huì),你如何占領(lǐng)市場, 第八個(gè)原因,那就是,開發(fā)者,并不能夠足夠地從用戶角度考慮,要使用模板引擎,則要學(xué)習(xí)一個(gè)新的模板語言,并且相當(dāng)多的模析語言,并不是簡單易學(xué)。于是,大家都學(xué)Smarty,不如就學(xué)Smarty,學(xué)了你這個(gè)不易學(xué)的模板語言,到其它地方,并不一定能用上,浪費(fèi)時(shí)間。 這方面做得最好的,好象就是symfony template,有5分鐘的向?qū)?,詳?xì)的文檔,并且,很工整的面向?qū)ο蟮拇a,當(dāng)然TWIG也是一個(gè)不錯(cuò)的模板引擎。DWOO雖說改寫了SMARTY, 但并不比SMARTY高明多少,只能說是兩種不同的風(fēng)格,或體系。當(dāng)然,不可否認(rèn),DWOO比smarty2肯定快,但現(xiàn)在,相對(duì)于 smarty3,DWOO又如何了呢, 模板引擎,或許是PHP永遠(yuǎn)的一個(gè)心結(jié)~
信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
|