對PHP開發框架的一些觀點

tony0087發表於2021-09-09

PHP從誕生以來就受到廣大程式設計愛好者的喜歡,成為中小站長的好幫手,並培養了大量的PHP程式設計人員,但是隨著PHP的應用越發廣泛,很多時候已不限於從事中小網站的應用,一些大型PHP專案也屢見不鮮。 

    當我們選擇php開發大型專案時,就不得不考慮開發效率、開發規範、後期維護等問題,這時大家往往會選擇一款人們所認可的開發框架,目前所流行的Zend Framework、、Symfony、CodeIgniter、CakePHP等都聲稱有著開發大型應用的能力。 

    新框架層出不窮,但當我們真正應用這些框架去實現產品又總是會有各種不同的問題產生: 
    一、大型框架的背後往往有著較為深厚的結構理論,最熟悉的莫過於MVC、ORM這樣耳熟能詳的理論術語,還有很多深度物件導向方面的知識,但是真正瞭解這些的人卻為數不多,使得應用門檻急劇攀升;除此大型框架中的應用細節更是紛繁複雜,學習成本也相對較高,這對於原本只是定位中小應用的PHP變得尤為尷尬。 

    二、PHP做為一門指令碼語言,它的執行往往基於宿主程式(如:apache、php-fpm),在單次請求上經歷建立程式、初始化環境、編譯指令碼、執行引擎、輸出、資源回收、程式銷燬等一系列過程,在程式語言層面綜合執行效率上要比編譯型語言慢上2-3個數量級,伴隨著消耗大量的系統資源,在此基礎上我們還要搭建及載入複雜的開發框架更是增加了其執行成本。而在大型應用中從不缺乏特殊需求,有時PHP加大型框架的執行效率就是致命的。 

    三、大型框架所考慮的因素過多,開發人員在應用時需要額外關注程式碼以外的細節過多,如:非標準約定、冗長的手冊、瑣碎的配置、複雜的檔案目錄結構、難以限制的合理性約束、千姿百態的類庫等等,使得大多數程式設計師開發過程屢糟困惑,提高開發效率也成了空話。 

    四、最致命的一點,框架作者不斷地尋找銀彈,試圖製作出一個滿足所有需求的怪物。大型應用對系統的鬆散耦合性要求很高,通常不可能在開發層面直接對資料進行操作,見一個簡單的SOA模型(附圖),資料層和業務層幾乎是物理隔離的,而在業務層的開發上只針對資料層提供的服務介面進行訪問。從目前的PHP開發框架來說(特別是MVC模型),通常使用ORM來直接對資料庫表進行抽象,並直接加以CRUD操作,靠譜的大型應用是不會這做的(或許適合VPS,但大型應用會選擇VPS ??)。 

    總結,PHP大型框架真的還處於很尷尬的地位,但是從另一方面來說,好的PHP大型框架真的是一個值得很多人學習的好榜樣,其中蘊涵了大量的設計理念、設計模式、程式碼最佳化、語言特性、軟體工程等知識體系,融匯php精髓但又遠超PHP本身。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1747/viewspace-2801495/,如需轉載,請註明出處,否則將追究法律責任。

相關文章