PHP從誕生以來就受到廣大編程愛好者的喜歡,成為中小站長的好幫手,並培養了大量的PHP編程人員,但是隨著PHP的應用越發廣泛,很多時候已不限於從事中小網站的應用,一些大型PHP項目也屢見不鮮。
當我們選擇PHP開發大型項目時,就不得不考慮開發效率、開發規範、後期維護等問題,這時大家往往會選擇一款人們所認可的開發架構,目前所流行的Zend Framework、Yii、Symfony、CodeIgniter、CakePHP等都聲稱有著開發大型應用的能力。
新架構層出不窮,但當我們真正應用這些架構去實現產品又總是會有各種不同的問題產生:
一、大型架構的背後往往有著較為深厚的結構理論,最熟悉的莫過於MVC、ORM這樣耳熟能詳的理論術語,還有很多深度物件導向方面的知識,但是真正瞭解這些的人卻為數不多,使得應用門檻急劇攀升;除此大型架構中的應用細節更是紛繁複雜,學習成本也相對較高,這對於原本只是定位中小應用的PHP變得尤為尷尬。
二、PHP做為一門指令碼語言,它的運行往往基於宿主進程(如:apache、php-fpm),在單次請求上經曆建立進程、初始化環境、編譯指令碼、運行引擎、輸出、資源回收、進程銷毀等一系列過程,在程式設計語言層面綜合運行效率上要比編譯型語言慢上2-3個數量級,伴隨著消耗大量的系統資源,在此基礎上我們還要搭建及載入複雜的開發架構更是增加了其運行成本。而在大型應用中從不缺乏特殊需求,有時PHP加大型架構的運行效率就是致命的。
三、大型架構所考慮的因素過多,開發人員在應用時需要額外關注代碼以外的細節過多,如:非標準約定、冗長的手冊、瑣碎的配置、複雜的檔案目錄結構、難以限制的合理性約束、千姿百態的類庫等等,使得大多數程式員開發過程屢糟困惑,提高開發效率也成了空話。
四、最致命的一點,架構作者不斷地尋找銀彈,試圖製作出一個滿足所有需求的怪物。大型應用對系統的鬆散耦合性要求很高,通常不可能在開發層面直接對資料進行操作,見一個簡單的SOA模型(附圖),資料層和業務層幾乎是物理隔離的,而在業務層的開發上只針對資料層提供的服務介面進行訪問。從目前的PHP開發架構來說(特別是MVC模型),通常使用ORM來直接對資料庫表進行抽象,並直接加以CRUD操作,靠譜的大型應用是不會這做的(或許適合VPS,但大型應用會選擇VPS ??)。
總結,PHP大型架構真的還處於很尷尬的地位,但是從另一方面來說,好的PHP大型架構真的是一個值得很多人學習的好榜樣,其中蘊涵了大量的設計理念、設計模式、代碼最佳化、語言特性、軟體工程等知識體系,融匯php精髓但又遠超PHP本身。
最後還是要對這些大型PHP架構說一流行話,“學之者生,用之者死”。
摘自:紅眼技術部落格
http://www.bkjia.com/PHPjc/478590.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/478590.htmlTechArticlePHP從誕生以來就受到廣大編程愛好者的喜歡,成為中小站長的好幫手,並培養了大量的PHP編程人員,但是隨著PHP的應用越發廣泛,很多時候...