十款PHP開發框架對比

        PHP開發框架近來在PHP社區中成爲討論的熱點,幾乎天天都在推出新的框架。面對市面上超過四十種的開發框架,你很難判斷究竟哪一款最適合你,尤爲是在這些框架所提供的功能不盡相同的時候。 
  
 
  本文將引導你遍覽十款最熱門最流行的開發框架,並對它們做出橫向比對。我會先列出一張全部框架的一覽表,然後咱們將對它們逐個簡述。
 
   

  概覽 
  如下你看到是這十款開發框架的一覽表,列舉了他們各自所提供的功能。 
  #1: 表示框架是否內建模型-視圖-控制器。 
  #2: 表示框架是否無需修改便可支持多數據庫。
 
  #3: 表示框架是否支持對象記錄映射器,一般這是ActiveRecord的封裝包。
 
  #4: 表示框架是否包含其它數據庫對象,好比TableGateWay
 
  #5: 表示框架是否內建模板引擎。
 
  #6: 表示框架是否緩存對象或者其餘緩存機制。
 
  #7: 表示框架是否內建校驗或過濾組件。
 
  #8: 表示框架是否內建Ajax支持。
 
  #9: 表示框架是否內建用戶驗證模塊。
 
  #10: 表示框架是否包含其餘模塊,例如RSS feed解析器、PDF模塊或其餘實用模塊。   
 
  
 
  
Zend Framework 
  Zend Framework 儘管從對比表上來看它沒佔到什麼便宜,可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版原本開發產品也何嘗不可吧
   
  
 
  
Symfony Project 
  從對比表中不難看出,Symfony是一款極具擴展性的開發框架,它甚至完整植入了一個叫作PropelORMPropel也是開源項目,而且迄今爲止多是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頗有潛力,框架的基件它包羅萬象,像MVC、數據庫對象和模板引擎,不過僅此而已。它沒有任何外掛模塊,同時也缺乏一些內建的功能,例如Ajax、緩存、驗證模塊,等等。
 
  
 
  儘管如此,WACT仍是擁有最好的模板引擎,甚至能夠幫助你建立本身的模板標籤來擴展功能。
 
  
 
  
 
  
Prado 
  Prado很是獨特,它提供了一些很酷的特性。它沒有內建對MVC的支持(就我看來),可是它確實擁有處理大多數PHP任務的各類各樣的組件,更棒的是,它實現了事件驅動腳本。例如,在一個HTML按鈕上設置onClick事件連接到一個PHP函數。這點近似ASP.NET,而Prado確實包含了更多的ASP.NET組件,像GridViewRepeater Control
 
  
 
  僅憑對比表上的數據,Prado看似要弱於其它框架,但事實並不是如此。由於Prado如此獨特,儘管它得分不高,可是在實際應用中它是很是強大的。
 
  
 
  
 
  
PHP on Trax 
  這個框架看上其簡直就是Ruby and RailsPHP上的一個接口,它之前也確實叫作PHP on Rails。不幸的是,它的文檔實在是太稀缺了,因此也很難判斷這個框架究竟提供了些什麼,可是文檔中的確提到了ActiveRecord,因此它可能提供ActiveRecord,就像RoR。還有就是它內建了Ajax支持,從它網站上的兩個演示視頻中不難看出。
 
  
 
  PHP on Trax基本上能符合使用者對框架的要求,可是它仍是缺胳膊少腿,比方像驗證模塊和緩存模塊。它也沒有任何外掛模塊,是以目前來講,它很初級。
 
  
 
  
 
  
ZooP Framework 
  ZooP Framework能夠說一應俱全,對比表上一目瞭然,差很少該支持的都支持了,除了ORM層。更意外驚喜的是它支持PHP4,這對於它提供的這麼全面的功能來講實在是太不簡單了,太棒了!
 
  
 
  ZooP還提供了內建的GUI控制,使得建立表單的工做變得異常快捷。它支持絕大多數的經常使用表單元素,在常規HTML裏使用GUI控制的好處就是你能夠將驗證的邏輯操做和GUI控制緊密地結合在一塊兒。
 
  
 
  
 
  
eZ Components 
  與其說ez Components是個框架,不如說是一個組件集,可能正是由於如此它並無內建對MVC的支持。
 
  
 
  它包括了大多數經常使用組件,如數據庫組件和緩存組件,可仍是缺乏點東西。比方說,沒有ActiveRecord組件和驗證組件。另外一方面,它提供了一些外掛組件,好比e-mail組件,可是很少,其它框架(Zend Framework)提供的更多。
 
  
 
  
 
  
CodeIgniter  
  CodeIgniter相對來說是個很新的框架,它的做者是ExpressionEngine的開發團隊(譯者注: PHP blog程序pMachine的升級換代產品,很惋惜不是免費的),看上去頗有潛質。不幸的是,它尚不能處理多數據庫,儘管這項功能仍在開發中。
 
  
 
  它源於Ruby on Rails,因此它提供了不少的相同功能,好比scaffolding(代碼自動生成)。它的文檔編得至關棒,甚至還有視頻教程幫助你快速上手。 

   
  
 
  獲勝者是
... 
  
 
  在這裏我不得不很是遺憾地宣佈,無人勝出。每一個框架所提供的功能特性不盡相同,所以無人完勝。一如往常,最後這將取決於我的偏好和選擇。我極力推薦你在做出決定前先認真仔細地研讀各個框架的文檔,剩下就靠你本身判斷了。
 
  
 
  就我的而言,個人確很是喜歡Zend Framework,但當我仔細研究了每一個框架以後,我發現了不少有趣的功能,比方說Prado的事件,抑或SymfonyORM封裝包。
 
  
 
  當你實在是沒法決定選擇哪一個框架的時候,你仍能夠選擇像大多數人那樣本身動手。雖然耗時費力,可是樂趣無窮。
 
    
 
  如開始所言,一部分框架已經有了長足的更新,而我最近比較傾向於symfony,它充實的文檔令到上手很是方便,可是它的龐雜也令到開發小項目,甚至像我這樣的我的迷你項目的過程有點得不償失,也許CodeIgniter的簡潔在這方面已經足夠。
web

相關文章
相關標籤/搜索