主流PHP框架橫向對比


PHP框架的發展背景

毫無疑問,Web框架技術在近幾年已經獲得了日新月異的發展和普及,在過去幾年裏,框架技術的廣泛經歷了比較大的完善過程,很大一部分能夠歸因於RubyonRails,以及在其餘編程語言中流露出的MVC框架思想。php

若是你是一個PHP忍者,而不是一個鐵桿的Ruby追隨者,你也許會驚奇市面上已經有這麼多的框架,哪個纔是適合你的。固然回答和個問題取決於的諸多因素,今天咱們將會回顧一下這個典型的問題,如何爲你的下一個應用系統選擇適合你的PHP框架。html

同時咱們也來看一下比較流行的PHP框架,比較一下他們的區別,這樣能夠幫你本身作出明智的選擇,找到最適合你項目的框架。git

明確你的需求

在你決定爲你的項目選擇一個框架以前,你當先理解須要,需求和了解一些開發團隊幕後的工做,咱們總結出了以下幾個問題,在開始下一步以前你能夠試着問問本身。github

你的應用程序主要集中於解決哪些問題?

你的應用能夠是一個電子商務平臺,一個社交網站,消息共享平臺或者活動目錄,舉例來講,若是你正在構建一個電子商務網站,你也許更但願選用一些具備用於處理信用卡和交易會話的成熟的擴展函數庫的框架。另外一方面,若是是一個輕量級的消息平臺(好比說微博類系統),則你也許更應該注重快速的擴展和跨服務器跨數據的支撐訪問能力,爲了實現負載均衡和快速鏈接訪問。web

你的主機運行環境將是什麼?

有些特殊的框架會須要使用到一些非默認的其它PHP擴展或者軟件安裝在服務器上,好比,有些框架的數據抽象層必需要求經過PDO來實現訪問,而非直接調用更底層的MySQL或MySQLi,或者有些相似wiki類的程序的圖像壓縮和處理功能每每須要使用到ImageMagick或Graphiviz這些外部程序。而這些擴展也許並不會被全部的共享主機環境(虛擬主機)支持,此外即使是一個輕量級的小型框架,並且自我集成了全部所需的函數庫而且也具備良好的可移植性和適應性,這樣的框架應用在處理數據密集型的操做或者大型數據處理的系統時,性能又會成爲它的主要瓶頸。編程

你的開發人員或團隊的優點和劣勢在於什麼?

若是你是個項目經理,一個重要的事情是瞭解清楚你的具體開發人員他們的能力和弱勢,由於他們是真的悶頭幹活兒人,因此也許你能夠選擇一些更加面向開發人員友好的容易上手的框架。固然這個問題的也許並非影響決定是否採用一個框架的決定性因素(不斷地要求本身和團隊學習新的技術老是好的),但着絕對是一個會影響到你的時間表、預算和安全等多方面因素的重要考量條件。php框架

如何在“高耦合性”仍是“低耦合性”的框架中作出選擇?

若是從框架產品自身的耦合性來將目前主流的php框架產品分爲高耦合性和低耦合性兩類。低耦合性的框架看起來更像是一個豐富的函數庫和邏輯封裝的抽象層,甚至有些好的框架自身就是PHP的一個高級擴展組件,好比PDO,它絕對算得上是一個數據訪問的框架也是抽象層。還有一些其餘值得一提的低耦合性框架,好比ZendFramework,CakePHP,以及國內開發的ThinkPHP都屬於這個範疇。若是你將接手的項目歷史問題比較多,而且對UI的自定義比較高,你恐怕須要一個低耦合性的框架來知足你靈活的需求。安全

另外一方面是一些高耦合性框架的表明,好比一些由CRM衍生而來框架相似Drupal,Joomla,還有直接就是爲了高耦合性而開發的OpenbizCubi框架,國內小範圍流行的框架還有普元等。這些框架的最優秀的特色是可讓你徹底只集中於實現你的核心業務邏輯,你甚至不用去管如何實現UI和用戶會話管理這些基礎特性,你只須要把你的代碼和它們提供的接口規範進行“鏈接”就能夠了。若是你負責的項目是一個新的項目,你確定不但願把大部分的時間都花在實現基礎業務邏輯上,好比多是爲客戶公司開發一套“停車場管理系統”,仍是選擇相似OpenbizCubi這樣的框架,在其之上直接去實現你的業務邏輯是最對得起你的時間預算和投資回報率的。服務器

目前主流的開發框架

如今咱們已經對你將要開發的應用程序和你的開發團隊有了足夠的瞭解和認識,那麼接下來讓咱們來測試幾款比較流行的框架和他們所能提供給咱們的功能特性吧。架構

OpenbizCubiPHP開發框架

官方網址:http://openbiz.me/

下載地址:http://openbiz-cubi.googlecode.com/files/Openbiz-Cubi-Suite-3.0.7.exe

這顯然是一個高耦合性的框架的表明,有點讓開發人員“拎包入住”快捷酒店同樣的的感受。OpenbizCubi是一個應用平臺式的開發框架。雖然與衆多更加耳熟能詳的框架相比OpenbizCubi仍然是一匹黑馬,可是仍是一個十分值得推薦的框架。它自身基於ZendFramework構建,可是擁有本身獨特的基於元數據的MVC和ORM邏輯,並採用Smarty和PHP模板做爲主要UI的模板引擎,因此若是你是Zend框架的玩家,別擔憂,OpenbizCubi的代碼也會一樣讓你很容易上手。

它不一樣於其餘傳統意義上的PHP框架,它具備一個相似JAVA的元數據引擎,能夠經過XML的方式來“描述”大多數對象,甚至經過XML的描述就能夠實現數據的CRUD(增刪讀改)這些操做。若是你的業務需求僅僅是要實現一些簡單的數據CRUD操做,你甚至不須要去寫什麼PHP代碼,XML就能夠所有搞定。而你的PHP功夫能夠經過他的Plugin-Service方式用於集中在實現某些特殊的業務邏輯上。

OpenbizCubi目前還有一個叫作OpenbizAppbuilder的超級好用的代碼生成工具,對於還不熟Openbiz的XML元數據的開發人員來講,Appbuilder絕對是一個能夠幫助你快速上手的利器,他經過圖形界面的生成嚮導來幫你自動建立數據對象、表單對象、嵌入式服務,甚至整個應用程序的雛形。按Openbiz的官方介紹來講,你只須要思考清楚你的應用程序的業務邏輯,剩下的代碼工做就交給OpenbizAppbuilder來幫你搞定吧。

CakePHP開發框架

官方網址:http://cakephp.org/

下載地址:https://github.com/cakephp/cakephp/archive/2.3.0-RC2.tar.gz

若是你仍然須要編寫面向PHP4兼容的代碼,CakePHP將是一個很是不錯的選擇,在PHP4&5的MVC式框架列表裏面,CakePHP都曾經是最流行的。它還提供了不少種途徑的技術支持(討論組、留言板、IRC等)還有優秀的教程。CackePHP是個很容易上手的框架,可是你並不容易在短短几周的時間就徹底掌握它。

ZendFramework框架

官方網址:http://framework.zend.com

下載地址:http://www.zend.com/en/download/633

ZendFramework是面對一些較有經驗的開發者和從底層構建一些企業級應用程序而設計的。(例如:宣稱面向企業應用而設計的OpenbizCubi就是基於ZendFramework框架之上而構建的。)該框架是高度模塊化的。這意味着你能夠按你的實際須要來引用Zend的代碼。有些函數庫甚至能夠很容的被提取出來單獨使用(例如Zend_Gdata,這也是個低耦合性的特色)使用Zend框架,你沒必要非要聽從它的MVC架構,(雖然你最好能這麼作),而且它還提供了許多內建的高級功能用於完成與現有的web服務整合,多語言化和實現單元測試這些任務。

CodeIgniter

官方網址:http://codeigniter.org.cn

下載地址:http://codeigniter.org.cn/download

CodeIgniter是一個PHP5.2+的MVC框架,它體積小巧切具備豐富的文檔資源。一般被稱爲“初學者框架”,由於它相對容易試用和較短的學習曲線,此外CodeIgniter也是十分靈活和強大的。該框架擁有一個很是龐大的社區支持。而且在社區裏面很容易找到大量的CI函數庫,你能夠大膽的夢想,也許你正須要作的事情在社區的某個交流,某我的已經把它實現了。

Symfony

官方網址:http://symfony.com/

下載地址:http://symfony.com/download

Symfony是最古老的PHP框架之一(相信你從他的網站風格上也發現這一點了),他一樣也是轉爲企業級Web應用程序而設計的。然而,對於他所能提供的全部動力和性能而言,它只擁有很小的體積而且很是容易配置在大多數php的主機環境中。因爲他的年頭最長久,你會很容易找到許多關於Symfony的教程、書記等資料,對於新手來講,這絕對是件好事兒。

Symfony使用命令行代碼生成工具來爲項目快速生成所需的代碼,這種方式也許對於某些開發人員來講是前所未聞的(在那個年頭,也許吧。。。)而後,他能夠幫助你在很短的時間裏完成代碼並是他們能夠運行。Symfony的網站上手機了大量的教程和範例代碼,來幫助你熟悉掌握他們。

YiiFramework

官方網址:http://www.yiiframework.com

下載地址:http://yii.googlecode.com/files/yii-1.1.13.e9e4a0.tar.gz

這也是近幾年纔出現的一匹黑馬。

本文轉載自techweb!


相關閱讀

相關文章
相關標籤/搜索