PHP框架發(fā)展存四誤區(qū) 死穴不除難成大器
隨著PHP技術(shù)的普及,PHP各類應(yīng)用框架也如雨后春筍般飛快的發(fā)展,與之相矛盾的是,一些所謂的高手經(jīng)常把自己寫的一個"框架"作為一個產(chǎn)品,實際生產(chǎn)行為中往往使用某些CMS或論壇程序作為核心開發(fā)真正的應(yīng)用。
其實框架這概念,最早來源于C/S軟件的應(yīng)用,比較經(jīng)典的有:微軟的MFC、Java的Spring、Struts、Hibernate(也就是所謂的SSH)之類的框架,當(dāng)然MFC純粹是針對C/S類應(yīng)用的,而后者針對或適用于Web應(yīng)用,然而不管是那種,應(yīng)用在Web上,都是有明顯缺點的,但PHP一些框架往往都繼承了這些思想,所以到目前為止,PHP類框架還都是止于模仿,當(dāng)然也確實充分利用了PHP的一些特性,但真正在應(yīng)用上,仍然顯得做大項目不足,小項目多余的感覺,這也是PHP框架一般只作為"學(xué)者"使用,應(yīng)用卻并不是那么流行,很多所謂的高手也寧愿自己去寫一個框架的原因。
那么,PHP框架發(fā)展到底存在哪些誤區(qū)呢?
主要有下面幾個方面:
1、把控制器寫得過于強大,從而偏離了框架的本質(zhì)
有些框架的控制器簡直可以完全代替rewrite了,但是這樣有意義么?完全就是一個無聊的鬧劇而已,作為框架,最需要做的事情一是要簡便易用,二是提供多一些針對Web真正實用、穩(wěn)定、必要的庫,(而實際當(dāng)中,系統(tǒng)類庫和業(yè)務(wù)類庫往往是不同的)做過多年程序員的人都知道,老手和新手的區(qū)別在于,老手通常是有很多即時可用的代碼,而新手往往要自己去找,如果框架不能讓新手、老手都一樣簡便實現(xiàn)某功能,那么要框架來干嗎?所以說,過分去弄控制器這一塊,就偏離了原則,并且可能對開發(fā)造成一定的麻煩。
2、思想上仍然按照J(rèn)ava的那種老的一套思路,更適合于開發(fā)B/S應(yīng)用的企業(yè)管理軟件,而與Web的思路有點偏離
就拿權(quán)限與模塊化思路來說,一般的框架都把app固定死了,而實際應(yīng)用中,Web的APP通常是有三重的,具體為:administrator后臺管理應(yīng)用池,member 前臺會員控制中心應(yīng)用池,public公眾瀏覽信息應(yīng)用池。
傳統(tǒng)的框架雖然有通過權(quán)限系統(tǒng)進(jìn)行隔離,但卻通常是把administrator、member、public三塊應(yīng)用都混在一塊,沒有對安全級別進(jìn)行隔離,不管是思想上,還是對于安全管理,其實都是不利的,就拿傳統(tǒng)的論壇程序來說,通常管理員要登錄后臺,都必須要重新輸入一次密碼,其實這樣做對安全確實是有利的,但從抽像思維來看,這是對管理員的應(yīng)用進(jìn)行了分離,姑且把這些應(yīng)用當(dāng)作"池"的概念,因此不能用傳統(tǒng)的B/S企業(yè)管理軟件的思想去設(shè)計。
3、View的模式過于死板,很難用于商業(yè)應(yīng)用
這里說的商業(yè)用戶是指要向第三方發(fā)布的應(yīng)用,就拿CakePHP來說,因為視圖固定得太死,如果想設(shè)計成真正易于美工修改,又支持多模板模式的,那幾乎是要完全拋棄它原有的view機制,很多東西太過學(xué)術(shù)化,而與實際應(yīng)用有點出入,加上模板引擎的思想大家很難真正做到統(tǒng)一,從而使PHP框架全面混亂。(由于每個人的理解有偏差,所以出現(xiàn)這樣的問題也是在所難免的)。
4、框架本身過于龐大,導(dǎo)致實際開發(fā)中,很多人對框架進(jìn)行不同程度的精簡,從而嚴(yán)重不統(tǒng)一
就拿官方的ZendFramework來說,其實一些核心文件加載時間就要0.05秒以上,用這種東西,假如要做一些高性能的系統(tǒng),幾乎是不可能的事情,但是在國外,因為對知識產(chǎn)品權(quán)比較尊重,所以未經(jīng)授權(quán)是不會胡亂改人的系統(tǒng)的,因為此應(yīng)之就出現(xiàn)了不少用于提升PHP運行性能的東西,但這終究不是最了的解決方法的。
終上所述,PHP框架要真正做到通用、實用,還需要很長時間,也許真正成熟之后,我們會后臺編譯在PHP擴展里的真正高性能PHP框架,(也就是說還是想把它做成組件的形式來使用)。
但給初學(xué)者的建議,并不是說不主張學(xué)習(xí)或使用框架,相反,要多些去研它的思想內(nèi)涵,此外大多數(shù)框架程序都充分利用PHP的一些特性,通過學(xué)習(xí)框架能發(fā)現(xiàn)不少東西,但是真正優(yōu)秀的程序員,最終需要的還是自己的靈魂,多些去想為什么?如何才能更方便,如何才能讓自己的"代碼庫"適應(yīng)性更強,當(dāng)想通了這一點,其實一切東西都變得不再那么重要了。
【編輯推薦】