APP創業項目-PHP架構選擇

來源:互聯網
上載者:User
本文繼《 APP創業項目-後端語言選擇》之後討論基於PHP語言選擇開發架構。PHP從誕生至今出現數以百計的大小架構,還有人說PHP生來就是反架構的自由語言,架構的使用反而會降低PHP的效能。確實,引入複雜的架構帶來了效能的降低,但我認為從團隊合作的角度來說,基於統一的架構開發有助於合作與未來擴充。架構的優於劣關係到程式的效能,也關係到開發的效率,效能與開發效率很多時候在編程領域是一對矛盾體,正如C與JAVA,一個以效能著稱、一個以開發效率而流行。在矛盾中尋找平衡是一個從來沒有對於錯。

PHP的眾多架構中,依然存在效能與效率的平衡問題,名聲在外的Laravel被稱為最優雅的架構,Yaf、Phalcon被譽為最快的架構,還有Yii、Codeigniter、Zend Framework等知名架構。並不是說優雅就不快或者快就不優雅,這隻是一個相對的評價。那麼我們該如何選擇架構?

第一、選擇的依據是什嗎?是效能、還是效率?

雖然Laravel官網首頁大大的字“Love beautiful code? We do too.”表明它優雅的特色,這並不影響Phalcon、Yii、Zend Framework的優雅,在開發效率上也並沒有明顯的提升,但是不同的架構在效能上的差距還是比較明顯的。參見 效能比較,該網頁從JSON、單Query、多Query等角度進行了架構效能比較,除了PHP原生之外,Phalcon-micro、Yaf、Phalcon都表現出數倍於Laravel的效能。

第二、我們需要架構做到多少?是一個全包保姆型的,還是一個極簡爸爸型的?

全包保姆型架構像保姆一樣幫你考慮得細緻周到,照顧得你基本上不能獨立生活。這類架構儘可能考慮到WEB開發的各個方面,架構對開發模式限制較多,開發人員最好遵循其限制,較小的項目會顯得高效輕鬆,隨著開發的深入,會漸漸在受限和突破之間進退兩難。

極簡爸爸型架構像爸爸一樣給你提供大方向的導引,小細節充分給你自由。這類架構只實現了架構該實現Route、MVC、Request、Response、AutoLoader,ORM、Cache、ACL等重要功能都由開發人員自由實現。

Phalcon、Laravel在架構上都解耦得很好,他們可以當做保姆型也可以當做爸爸型。Phalcon同時還提供了Phalcon-micro簡化架構以進一步提升效能。

下面簡要對Phalcon、Yaf、Laravel分析。

Phalcon

基於Zephir語言開發編譯為PHP的C語言擴充,專為高效能而生。

Phalcon團隊提供了Zephir語言,一個與PHP相似性極高的語言,專用於編寫PHP擴充,開發人員可基於Zephir開發項目相關的PHP擴充,例如資料庫連接組件,PHP項目串連資料庫時需要將使用者名稱和密碼寫入設定檔,擷取到設定檔即可擷取到帳號密碼,如果將資料庫連接部分編譯為C擴充,可以一定程度上保證使用者名稱和密碼的安全。對於團隊公用且定型的核心組件,可以編譯為C擴充,開發人員基於此開發,既可以提升效能,又可以保護核心代碼。對於商業軟體,全部編譯為C擴充也未嘗不可。

Phalcon核心基於依賴注入思想,外掛程式和中介軟體機制基於事件驅動模式。依賴注入實現了運行時資源管理,事件驅動編程為開發人員提供了架構擴充可能。

Phalcon-micro便於實現超輕量級應用開發。

Phalcon程式碼群組織與Zend Framework高度相似,便於上手。

無法在架構內斷點調試,新手開發時,對架構不熟悉,編寫代碼出現未知問題時,要在架構內進行調試,只有兩種途徑,一是偵聽架構內事件,判斷商務邏輯,但是這種方法受限於事件拋出位置,且可觀察的資料有限。二是藉助Zephir語言修改架構原始碼後重新編譯,這是一件比較耗時的事情。

Yaf

國內開發,百度的多數項目基於它開發。與Phalcon一樣又C編寫編譯為PHP擴充,效能與Phalcon-micro相當。它是一個超輕量級的架構,除了核心MVC之外,都交給開發人員自己實現,適合經驗充分的開發人員用於大型項目開發,開發人員社區幾乎沒有。它與Phalcon一樣無法進行架構內調試。

Laravel

GitHub上最火的PHP架構,幾倍於Phalcon的開發人員活躍度,以美麗的代碼著稱。項目代碼追求藝術性,就連命令列都用artisan命名。架構充分解耦的同時提供了豐富的組件,開發風格與Python的Django架構很相似。但是代碼風格過於標新立異,例如核心代碼一級報名為Illuminate,用Eloquent表示ORM,有過PHP其他架構經驗者會顯得陌生。

總結

本文分析了選擇架構的依據,比較了Phalcon、Yaf和Laravel三個架構的優缺點。如果你的團隊對C擴充提升效能沒有太大興趣,開發經驗尚不充分,建議選擇Laravel;如果你的團隊對設計模式有較深理解,對PHP架構原始碼有一定的研究,有能力修改和擴充架構原始碼,建議選擇Phalcon,有過Zend Framework架構經驗更應該選擇Phalcon;如果你想學習從零開始編寫一個屬於自己的架構,可以考慮從使用Yaf開始。Yii、Codeigniter、ThinkPHP等架構未作一一分析,並不影響它們作為一個優秀的架構存在。

——————————————–

本站除標註[FW]和資訊文章外都為原創文章,轉載請注:

轉載來源:Coming X

原文連結: APP創業項目-PHP架構選擇

——————————————–

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.