引子
PHP開發架構近來在PHP社群中成為讨論的熱點,幾乎每天都在推出新的架構。面對市面上超過四十種的開發架構,你很難判斷究竟哪一款最适合你,尤其是在這些架構所提供的功能不盡相同的時候。
本文将引導你遍覽十款最熱門最流行的開發架構,并對它們作出橫向比對。我會先列出一張所有架構的一覽表,而後我們将對它們逐個簡述。
概覽
以下你看到是這十款開發架構的一覽表,列舉了他們各自所提供的功能。
Framework Comparison Chart
Framework PHP4 PHP5 MVC1 Multiple DB's2 ORM3 DB Objects4 Templates5 Caching6 Validation7 Ajax8 Auth Module9 Modules10
Zend Framework - - - - -
CakePHP - -
Symfony Project - - -
Seagull Framework -
WACT - - - - -
Prado - - - -
PHP on TRAX - - - - -
ZooP Framework -
eZ Components - - - - -
CodeIgniter - - -
#1: Indicates whether the framework comes with inbuilt support for a Model-View-Controller setup.
#2: Indicates whether the framework supports multiple databases without having to change anything.
#3: Indicates whether the framework supports an object-record mapper, usually an implementation of ActiveRecord.
#4: Indicates whether the framework includes other database objects, like a TableGateWay.
#5: Indicates whether the framework has an inbuilt template engine.
#6: Indicates whether the framework includes a caching object or some way other way of caching.
#7: Indicates whether the framework has an inbuilt validation or filtering component.
#8: Indicates whether the framework comes with inbuilt support for Ajax.
#9: Indicates whether the framework has an inbuilt module for handling user authentication.
#10: Indicates whether the framework has other modules, like an RSS feed parser, PDF module or anything else (useful).
#1: 表示架構是否内模組化型-視圖-控制器。
#2: 表示架構是否無需修改即可支援多資料庫。
#3: 表示架構是否支援對象記錄映射器,通常這是ActiveRecord的封裝包。
#4: 表示架構是否包含其它資料庫對象,比如TableGateWay。
#5: 表示架構是否内模組化闆引擎。
#6: 表示架構是否緩存對象或者其他緩存機制。
#7: 表示架構是否内建校驗或過濾元件。
#8: 表示架構是否内建Ajax支援。
#9: 表示架構是否内建使用者驗證子產品。
#10: 表示架構是否包含其他子產品,例如RSS feed解析器、PDF子產品或其他實用子產品。
如果上表所列有不當之處,敬請斧正。
Zend Framework
Zend Framework還相當新,尚處在beta階段(譯者注: 相對于作者寫這篇文章之時),是以還有些功能有待完整(比方說使用者驗證子產品),但它本身已經有不少功能了。盡管從對比表上來看它沒占到什麼便宜,可Zend Framework确确實實涵括了一些處理PDF文檔、RSS源、線上服務(Amazon, Flickr, Yahoo)的子產品,甚至更多。Zend Framework同時也包含了數個不同的資料庫對象,極大地便捷了對資料庫進行查詢的實作,甚至免去你手寫SQL查詢腳本的麻煩。
目前,Zend Framework并未完全支援ORM,但是開發人員仍然陷入在是否要添加ORM層的争論中。也許在将來會實作這些功能,你就可以編寫自己的ORM封裝包,投稿到社群,并有機會将之整合入架構的未來版本。
Zend Framework看上去前途一片光明,而且它同時又修正了一些常見的PHP問題。也許穩定版本就可以在對比表裡面表現得更出色了!
CakePHP
CakePHP是一款進階的MVC架構,自帶了不多的幾個子產品。它可以處理大多數的資料庫事務,支援Ajax個資料驗證。同時,它的使用者驗證子產品(Accsee List)也非常獨特,可以針對不同的使用者在通路網站不同部分時配置設定對應的通路權限。
盡管CakePHP的網站看上去令人犯暈,但是架構本身已經比較完整可用了。截至成文尚未見穩定版本,實在令人感到有點意外,畢竟已經開發了好幾個月了,不過我猜想也許用beta版本來開發産品也未嘗不可吧(譯者注: Risk you @ss baby!)。
Symfony Project
從對比表中不難看出,Symfony是一款極具擴充性的開發架構,它甚至完整植入了一個叫做Propel的ORM,Propel也是開源項目,并且迄今為止可能是PHP上最好的ORM解決方案。Symfony同時還整合了用于資料庫抽象層的Creole和用于MVC模型層的Mojavi。由于它僅僅是重用了這些項目的源代碼,而非重寫,由此使得架構具備了極為強大的擴充性,這一點在表中昭然若是。
Symfony有兩個缺憾,以使它不支援PHP4,這是由于需要PHP5中很多新特性的支援的結果,二是相對來說它有點複雜了。大多數任務,比方像分頁,在Symfony中的時限比其他架構要複雜得多,這決不是一款簡潔著稱的架構。
Seagull Framework
Seagull framework看上去相當不錯,自帶了很多特性。支援PHP4也對它的推廣相當有利,我本人就仍在使用PHP4,況且大多數空間寄存商尚未全面支援PHP5。
不幸的是,Seagull沒有提供對Ajax的支援,實在有點說不過去,不過通過Google可以毫不費力地搜尋到一篇自己添加Ajax支援的教程,而且這點在将來應該會添加到架構中。
WACT - Web Application Toolkit
WACT很有礸ˤں迷你項目的過程有點得不償失,也許CodeIgniter的簡潔在這方面已經足夠。
延伸閱讀
•Framework Performance: 一篇談及開發架構執行效率的文章,總覺得口水仗永遠打不完
•Top 10 PHP MVC frameworks: 這裡又評了個十大~~~
•MVC Frameworks Written in PHP: 這裡就不評了,全部羅列出來了
•How would you say Symfony compares to CakePHP and qcodo: askeet是symfony的一個示範項目,在這上面出現這樣一篇文章也蠻有趣的
本文出自 “清源教育” 部落格,轉載請注明此處,謝謝!更多php技術問題歡迎加群探讨:256271784,驗證碼:csl,不寫驗證不予通過喲~