主流PHP框架之間的比較

1、Zend Framework
優點:
(1)高度模塊化靈活性 :大量應用PHP5 中面向對象的新特徵:抽象類、異常、接口、SPL等;
(2)企業應用開發框架:嚴格遵循“針對接口編程”和“單一對象職責”原則;
(3)官方出品,自帶許多library,框架本身使用很多設計模式來編寫,架構優雅,執行效率中等;
(4) MVC設計,比較簡潔,具有路由功能,配置文件比較強大(能夠處理XML和php INI),各種 library 很強大,是所有PHP框架中各種功能最全面的,包括它不僅是一個框架,更是一個大類庫(取代PEAR)--主要特色;
(5)能夠直觀的支持除數據庫操作之 外的Model層(比 CodeIgniter 和 CakePHP 強),並且能夠很輕易的使用Loader功能加載其他新增加的Class;
(6)Cache功能強大, 從前端Cache到後端Cache都支持,後端 Cache支持Memcache、APC、SQLite、文件等等方式;
(7) 數據庫操作功能很強大,支持各種驅動(適配器);
(8)文檔全,在國內社區較成熟,學習成本中等。

缺點:
(1)MVC功能完成比較弱,View層簡單實現,無法很強大的控制前端頁面;
(2)沒有自動化腳本,全部需要手工創建;
(3)適合於大項目。

2、CakePHP
優點:
(1)類似於RoR的框架,包括設計方式和數據庫操作的Active Record方式;
(2) 設計層面很優雅,沒有自帶多餘的 library,所有的功能都是純粹的框架,執行效率還不錯;
(3) 數據庫層的 hasOne, hasMany功能很強大,對於複雜業務處理比較合適,路由功能,配置功能還不錯,自動構建腳手架(scaffold)很強大,適合中型應用,基本實現過 了MVC每一層,具有自動操作命令行腳本功能
(4) 文檔比較全,在國內推廣的比較成功,大部分都知道CakePHP,學習成本中等.

缺點:
(1) 把Model理解爲數據庫層操作,嚴重影響了除了數據庫之外的操作能力;
(2) CakePHP的cache功能略顯薄弱,配置功能稍嫌弱;
(3) CakePHP不適合大型應用,只適合中型應用,小型應用來說略微的學習成本高了點

3、 CodeIgniter
優點:
(1)簡單就是美:設計模式簡單,對象模式簡單;
(2)配置簡單:全部配置實用PHP腳本來配置,執行效率高;
(3)具有基本路由功能;
(4)具有初步的Layout功能,能製作一定程度的見面外觀;
(5)數據庫層封裝的不錯,有基本的MVC功能;
(6)快捷簡單,執行效率高,框架簡單,易上手,學習成本低;
(7)自帶很多library,適合小型應用。

缺點:
(1)內部結構膠混亂,缺乏擴展能力。
(2) 把Model層簡單的理解爲數據庫操作. 框架略顯簡單,只能夠滿足小型應用,略微不太能夠滿足中型應用需要.

4、 Symfony
優點:
(1) 完整實現了MVC三層,封裝了所有東西,包括 $POST,$GET 數據,異常處理,調試功能,數據檢測;
(2) 強大的緩存功能,自動加載Class(這個功能很爽),強大的語言支持;
(3) 具有很強大的view層操作,能夠零碎 的包含單個多個文件;
(4) 非常強大的配置功能,使用yml配置能夠控制所有框架和程序運行行爲;
(5) 能夠很隨意的定義各種自己的class,並且 symfony能夠自動加載(auto load)這些class,能夠在程序中隨意調用;
(6) 包含強大的多層級項目和應用管理:Project --> Application --> Module --> Action,能夠滿足一個項目下多個應用的需要,並且每層可以定義自己的類庫,配置文件,layout;
(7) 非常強大的命令行操作功能,包括建立項目、建立 應用、建立模塊、刷新緩存等

缺點:
(1) 使用了太多風格迥異的 開源項目來組合成框架;結構複雜難於學習;
(2)緩存功能無法控制, 每次開發調試總是緩存,需要執行 symfony cc,symfony rc來清除和重建緩存
(3) 解析模板和讀取配置文件的過程,花費時間不少. 學習成本很高,並且國內沒有成熟的社區和文檔,連中文手冊都沒有

評價:
Symfony 絕對是企業級的框架,唯一能夠貌似能夠跟Java領域哪些強悍框架抗衡的東西;強悍的東西,自然學習複雜,但是相應的對項目開發也比較有幫助,自然是推薦 複雜的項目使用Symfony來處理,覺得是值得,後期的維護成本比較低,複用性很強。相應的如果使用Symfony的應該都是比較複雜的互聯網項目,那 麼相應的就要考慮關於數據庫分佈的問題,那麼就需要拋棄Symfony自帶的數據庫操作層,需要自己定義,當然了,Symfony支持隨意的構造 model層。

5、ThinkPHP

(1)ThinkPHP快速、借用了成熟的Java思想,但是實際使用過程中有些基本的CURD 的關聯操作居然存在錯誤;
(2)ThinkPHP基於PHP5,充分利用了PHP5的特性;
(3)帶有數據驗證和自動填充功能,但是這個也束縛了ThinkPHP,導致不考慮添加自動統計字段等小功能.
(4)自動生成數據,不支持關聯。

6、FleaPHP

(1)採用PHP開發(完全支持 PHP4和PHP5)的應用程序框架,爲開發者創建自己的應用程序提供了必要的基礎功能和輔助組件。
(2)它成熟、快速、功能豐富。但在一些細節上不如 ThinkPHP人性化。如url函數。在FleaPHP中url函數的前兩個參數是控制器,動作名 ,而ThinkPHP恰好相反,因爲只輸入動作名的情況很多。而且數據庫的操作上這種參數的安排也是沒有ThinkPHP人性化。
(3)FleaPHP對數據的 操作很強大,居然可以操作中間表。FleaPHP的文檔和示例極少,學習成本大。但是一上手之後就很簡單了。
(4)FleaPHP框架的核心非常小,靈活配置可以組合出各種類型的基礎架構。
(5)對於簡單的腳本頁面,FleaPHP不需要載入MVC模式,只需爲應用程序提供業務邏輯和數據庫服務。而對於複雜的應用程序,FleaPHP可以完成從MVC模式調用、訪問控制、數據驗證到文件上傳、圖片處理等各種各樣的任務。
(6)FleaPHP作爲一個完全國產的框架,具有完全中文化的文檔、代碼註釋,並且在擴展功能上也注重考慮國內開發者的實際需求。因此相對於國外的各種框 架,FleaPHP更容易被國內開發者所接受。

總評:

以上數款框架,各有特色,而且都是開源項目,不過框架針對的項目不一 樣,一般來說 CodeIngiter 比較適合小型項目,CakePHP和Zend Framework比較適合中型項目,Symfony比較適合大型重量級項目,在項目選型的時候,要充分考慮框架的可以定製性、擴展性,因爲每個項目都無 法確定你是否會隨着需求的變化進行改變。

相對來說,Zend Framework和Symfony應對變化的能力比較強,特別是能夠隨意定製model層的Class,能夠非常方便增加自己業務或者數據處理類,我是 個人比較推薦在中大型項目中使用的框架。CodeIngiter和CakePHP在中小型項目中同樣能夠發揮重大作用,快速開發和原型構建,非常適合目標 不清晰的原型項目的開發。ThinkPHP框架是國內比較優秀的框架,功能強大,學習起來容易。其靈活設計秉承簡單的理念。如果太注重效率就使用 FleaPHP。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章