幾種PHP框架了解
CodeIgniter http://codeigniter.org.cn/
Code Igniter可以說是一匹黑馬。Code Igniter出現之時正是Symfony和CakePHP大行其道、Zend Framework萬眾期待的時刻。可憑借著獨特的設計思想,Code Igniter吸引了大批開發者。這點從其火爆的官方論壇就可得到證實。
Code Igniter推崇“簡單就是美”這一原則。沒有花哨的設計模式、沒有華麗的對象結構,一切都是那么簡單。幾行代碼就能開始運行,再加幾行代碼就可以進行 輸出。大部分日常開發中用到的東西都可以立即找到,并且可以很容易的使用。Code Igniter可謂是“大道至簡”的典范。
但是,Code Igniter本身的實現不太理想。內部結構過于混亂,雖然簡單易用,但缺乏擴展能力。因此在發展到1.5系列版本時,作者不得不通過增加各種hooks來為框架提供擴展能力。
CakePHP http://www.cakephp.org
CakePHP充滿了RoR的影子,從ActiveRecord模式到視圖的布局管理都和RoR非常相似。而且CakePHP一開始也嘗試實現與 RoR一樣的許多東西。但CakePHP的開發團隊后來發現PHP語言和Ruby語言存在巨大區別,因此RoR中的許多設計即便能夠在PHP中實現,也是 缺乏實用價值的。
CakePHP在發展中逐步走出了RoR的陰影,開始探索更能發揮PHP語言本身優勢的架構和實現。因此有一段時間CakePHP的API發生了劇烈的變化,以致其他開發者紛紛停下腳步處于觀望狀態。
但由于前期一些架構的不合理和對RoR太多的模仿,導致CakePHP的核心部分越來越難以理解,運行性能也不盡人意。而且CakePHP將一個龐大的數據庫操作對象作為所有業務對象的基礎。這雖然利于快速開發,但卻導致對業務邏輯對象的測試非常困難。
對于較小型的項目,CakePHP非常理想。出色的快速開發能力、豐富的API和詳盡的文檔都可以幫助開發者很快完成工作。但隨著項目規模的增加,CakePHP的局限性也變得突出。
Symfony http://www.symfony-project.com/
Symfony是一個非常成熟的框架,大量利用了已有的開源項目。Symfony使用Mojavi的核心代碼實現了框架的MVC模式,利用Propel作為數據庫抽象層。Symfony不僅功能強大,而且對Ajax有全面的支持。加上官方網站提供的大量文檔和教程,并擁有一個活躍的社區,因此受到許多開發者的歡迎。
但是,Symfony最大的問題也在于使用了太多風格迥異的開源項目來組合成框架。由于Mojavi和Propel本身都相當復雜,因此Symfony的結構非常復雜,難以理解和學習。
不過對于希望選擇一個框架作為企業內部系統基礎架構的企業來說,Symfony的成熟度、豐富的文檔和活躍的社區都是值得考慮的。畢竟企業內部系統更為看重的是穩定性和長期的支持。
Zend Framework http://framework.zend.com/
Zend Framework大量應用了PHP5中面向對象的新特征:接口、異常、抽象類、SPL等等。這些東西的應用讓Zend Framework具有高度的模塊化和靈活性。同時,因為嚴格遵循“針對接口編程”和“單一對象職責”等原則,讓Zend Framework很有希望成為一個出色的企業應用開發框架。
但不幸的是Zend Framework直到今天,也沒有做出更多的突破。在使用Zend Framework開發時,框架對應用程序自身最重要的領域邏輯分離沒有提供任何幫助。如果希望開發出真正健壯的企業應用,仍然需要開發者做出相當的努 力,并且在Zend Framework之上建造自己的基礎設施。
針對這點,批評者指出Zend Framework雖然大量應用PHP5的新特征,但卻沒有將這些相對于PHP4的優勢轉化為能夠為開發者提供幫助的東西。
對于簡單和小型的項目來說,Zend Framework不但不能提高開發效率。反而因為在框架中應用了大量面向對象設計和PHP5的新特征,對開發者提出了更高的要求,間接增加了項目的開發 成本。而對于較大的項目和企業應用,Zend Framework倒是一個不錯的基礎。但要創建一個成功的應用,仍然需要付出不小的努力。并且要時刻注意Zend Framewok的性能問題。
FleaPHP http://qeephp.com/projects/fleaphp
FleaPHP 為開發者輕松、快捷的創建應用程序提供幫助。FleaPHP 框架簡單、清晰,容易理解和學習,并且有完全中文化的文檔和豐富的示例程序降低學習成本。
使用 FleaPHP 框架開發的應用程序能夠自動適應各種運行環境,并兼容 PHP4 和 PHP5。
ThinkPHP http://thinkphp.cn
ThinkPHP是一個免費開源的,快速、簡單的面向對象的輕量級PHP 開發框架,遵循 Apache2 開源協議發布,是為了簡化企業級應用開發和敏捷WEB應用開發而誕生的。借鑒了國外很多優秀的框架和模式,使用面向對象的開發結構和 MVC 模式,融合了 Struts 的 Action 思想和 JSP 的 TagLib(標簽庫)、 RoR 的ORM映射和 ActiveRecord 模式, 封裝了 CURD 和一些常用操作, 單一入口模式等,在模版引擎、緩存機制、認證機制和擴展性方面均有獨特的表現。
MooPHP http://www.moophp.org/
MooPHP,全名是More & Original PHP Framwork。 從這里可以感受到MooPHP框架的設計理念:在安全、高效、穩定、易用的前提下,還原PHP 語言的原生態;以松耦合的方式,進一步增強了MooPHP的擴展性。MooPHP除了核心之外, 基于其本身松耦合的特性,非常容易進行外圍的擴展。