簡介
有太多的原因使得PHP成為世界上最受歡迎的腳本語言——高度靈活、簡單易用——不過寫PHP(或者任何這種語言)代碼時,人們常常陷入單調重複而令人生厭的體力活動的窘境。而這正是PHP開發框架大顯身手的地方。
通過提供一個開發Web程式的基本架構,PHP開發框架把PHPWeb程式開發擺到了流水線上。換句話說,PHP開發框架有助於促進快速軟體開發(RAD),這節約了你的時間,有助於創建更為穩定的程式,並減少開發者的重複編寫代碼的勞動。這些框架還通過確保正確的資料庫操作以及只在表現層編程的方式幫助初學者創建穩定的程式。PHP開發框架使得你可以花更多的時間去創造真正的Web程式,而不是編寫重複性的代碼。
PHP開發框架背後的思想被稱為“模型—視圖—控制器”(MVC)。MVC是這樣一種架構模式,它隔離了業務邏輯與UI,允許其一改變而另一者不受影響。(也可以說是關注點的隔離)在MVC中,模型負責數據,視圖負責表現,控制器則是程式主體或者說是負責業務邏輯。從本質上說,MVC拆分了一個程式的開發過程,這樣你就可以修改獨立的每一部分,而其他部分不受影響,這是十分重要的,它使得編寫PHP代碼更為快捷簡單。
使用PHP框架
開發者可能出於不同的考慮而使用PHP開發框架,不過最重要的原因是為了加速開發過程。相似工程之間的代碼重用能夠節省開發者大量的時間和精力。PHP開發框架內置了預建的模組,免去了冗長又令人厭煩的編程工作。這樣開發者就能夠把時間花在開發實際程式上,而不是每一次都要為每一個項目重建基礎模組。
穩定性是開發者使用框架的另一個重要原因。儘管簡單是PHP最大的資本,也是許多人喜愛這個腳本語言的原因,它也是PHP的“潘多拉之盒”,尤其是那些初學者而言,PHP是如此的簡單以至於他們會完全沒有意識地寫出低質量的代碼。這樣的PHP程式可能在大多數時間內仍正常工作,但你可能已在代碼中留下了巨大的安全漏洞,使其易受攻擊。要時刻牢記PHP是一門很寬鬆的語言十分重要,因此確保不在代碼中遺留任何安全漏洞是重中之重——即使程式看起來工作正常。
最後一點,PHP開發框架是可擴展的,並且有許多框架可供選擇。你也可以創造你自己的,不過許多開發者決定從那些流行的知名的開發框架中做選擇,因為它們往往有著龐大的支持團隊,以及相關的論壇/社區方便你與其他使用同一個框架的開發者相互交流。注意,你應當事先檢驗你的項目是否需要使用框架,這裡提供一份簡單的列表以供參考:使用框架能否節省你(和其他任何會使用它的人)的時間和精力?是否能夠讓程式得到更好的表現?能否提高穩定性?如果你對上面任何一個問題的回答是肯定的,那么使用PHP開發框架對於這個項目就可能是正確的選擇。
開始使用PHP開發框架
這是開發者,無論初學者還是經驗豐富的專家,常常詢問的問題,但又真的沒有直截了當的答案。對於許多初學者而言,框架提供了良好的穩定性和簡潔性,所以他們認為只要能用就應該用框架。它能夠減少低質量代碼的產生,並加快項目進度。
另一方面,許多經驗豐富的PHP程式設計師把框架視為那些不懂得如何寫出高質量的清晰的代碼的“初級”程式設計師而設計的工具。這句話對錯與否有待商榷,但事實上PHP開發框架的確是用來節省時間和提高編程效率的工具。
在忙於接近最後期限的工程時,使用PHP開發框架將帶來巨大的效益,因為它能夠極大地加快編程進度。所以如果你時間緊迫,使用PHP開發框架是極其正確的。應當把PHP開發框架列入考慮範圍的另一個例子是當你忙於一個有大量重複代碼的項目時,因為它有助於減少重複工作量。
PHP開發框架的關注點
去搜尋PHP開發框架的人將會看到各式各樣的選擇,你甚至可以創建你自己的,儘管只推薦PHP專家們這么做。在尋找最適合你需求的PHP開發框架時,你要時刻想著誰會使用和/或徹頭徹尾地修改它,這點很重要。如果會有許多人使用這個程式,最好用一個大多數開發者都熟悉的框架。另一方面,如果你想要一個自己使用的Web程式,你最好選擇一個你覺得最舒服的PHP開發框架——管它是流行還是不受歡迎呢。
在尋找PHP開發框架時應該考慮多種因素:簡單易用、靈活開發、性能、在其它開發者中間的流行程度、強大的特性、以及支持和論壇。我推薦你先嘗試幾款不同的PHP開發框架,從中找出一個最適合你需求的,各種框架之間有些微的差異,有著不同的優勢和劣勢。就拿Zend Framework來說,V3版本之後就帶有了豐富的功能,再加上一個可擴展的支持系統,這一切都是因為它存在了足夠久。作為對照,CakePHP是另一個比Zend Framework年輕的PHP開發框架,它的支持系統的規模就略微小些(儘管對這個框架的支持正在飛速增長),但CakePHP更加用戶友好且簡單易用。
如你所見,每種PHP開發框架都有它自己的優點,所以最好先做一些嘗試,捕捉一些錯誤以便找出哪個框架能最好地服務於你的需求。另一種很好的選擇框架的方式是諮詢你那些身處開發者社區的同事,問問他們喜歡哪個。那些真正用過某個框架的人會告訴你它是否易用,特性,可用的支持,框架周邊的社區所涉及的領域,他們還可能告訴你它的缺點。
最常見的錯誤
任何一種類型的編程都會出現錯誤,不過PHP開發框架能夠極大地限制這些錯誤的產生,因為它從開發過程的一開始就提供了經過驗證的正確代碼。而且看來重複的代碼編寫會增加錯誤出現的機率,而框架徹底解決或至少減少了那個問題。
這就是說,使用PHP開發框架仍然又需要注意的問題。例如,除非你是個PHP專家,否則你應該選擇一個流行些的框架,它們有著豐富的支持和一定的活躍用戶基數(下面會列舉一些流行的PHP開發框架)。有許多框架只有少得可憐的支持甚至沒有支持,並且/或者是由對PHP了解有限的人創建的。這些框架會導致你的程式不能正常工作,更壞的情況下會導致你的網站出現災難性的安全問題。
另一種常見的錯誤是沒有確保資料庫和網站伺服器兼容特定的框架。例如Seagull PHP Framewor推薦如下配置:
PHP:PHP 4.3.0 是最低配置,之後的版本也支持,PHP 5.1.1 及更高版本也可以。請避免任何 5.0.x 系列的東西。
MySQL :MySQL 4.0.x, 4.1.x 和 5.0.x 都支持,你也可以使用 3.23.x。 Apache :Seagull 在 1.3.x and 2.x 系列的 Apache 中工作得很好。
如果你不能滿足這些要求,你就不能得到所選擇框架可能的最佳性能。就算你是PHP專家,也應該在嘗試框架之前閱讀其文檔以確保兼容性。
和上面這個錯誤比較類似的,不按照推薦安裝步驟去安裝你的PHP開發框架也會給你帶來令人頭痛的煩惱。仍然用Seagull作為例子——Seagull的Wiki上有一份詳細的框架安裝流程,其中有幾個關鍵步驟有時候常常被粗心或者沒有戒心的開發者輕易地忽略了。關鍵是你一次就把框架裝好會讓你在接下來的實際開發中節約不必要的時間開銷。
流行的PHP開發框架
近幾年來,隨著PHP作為一門被許多開發者選作他們的腳本語言而不斷演化,PHP開發框架如雨後春筍般走上螢屏。人們總是在爭吵到底哪個PHP開發框架最好,但不是每個框架都是為所有人而產生的,這本來是很簡單的事實。這裡列舉五個最好的最受歡迎的PHP開發框架:
The Zend Framework
The Zend Framework 在開發社區中有大量的追隨者,它致力於Web 2.0風格的程式。因為它眾多的追隨者組成的活躍用戶開發的擴展支持,Zend被稱為“The PHP Company”。Zend是一個,也可能不是,今天可用的最受歡迎的PHP開發框架。它有健壯的特徵能夠支持協作開發,它需要一些PHP的額外知識。
Yii Framework
Yii是一款非常簡潔優秀開源的PHP框架,致力於追求簡潔,安全,自由,高效,是中小型項目首選框架。框架構架合理,一鍵生成完全合乎規範的大型網站資料夾架構,網站架構一目了然。強大的外部類庫支持,分散式存儲,強大的快取系統,單入口MVC模式,面向對象編程,具有微核心設計,移植性強,鬆散耦合等特點,能集成到你任何一個系統裡面。無論您是一個NewPHPer 還是OLDPHPER,那么E框架是您的首選。學習完Yii框架後您可以快速並且輕鬆的駕馭其他框架,步入php高手之列。
CakePHP
CakePHP 無論對於初學者還是職業PHP開發者都是很好的選擇。它基於與Ruby on Rails同樣的原則而設計,它十分注重快速開發——這使得它成為一個非常好的用於RAD的開發框架。它快速增長的支持系統,簡潔性和可測量性使得CakePHP成為今天可用的最受歡迎的PHP開發框架之一。
Symfony
Symfony是為那些更加職業的主要開發企業級程式的開發者而準備的——特別是 Askeet 和 Yahoo! Bookmarks。這款開源PHP開發框架有著豐富的特性,做起這些來綽綽有餘,它主要的缺點是比其他的框架略微慢一些。
Codelgniter
Codelgniter 以它的簡單易用,性能和速度而聞名。與 Symphony 不同,這款PHP開發框架對於共享主機的用戶而言很理想,如果你想有一個小型覆蓋面的框架。它提供了簡單的解決方案,還有擴展的知識庫,通過視頻教程,用戶指南和wiki來提供支持。
初學者應當考慮CodeIgniter。
Seagull
Seagull 是一個良好的PHP開發框架,可以用來開發Web,命令行和GUI程式。這是一款無論對初學者還是職業程式設計師而言都及其簡單的開發框架。對於初學者,Seagull提供一套包含樣例程式的庫,經過簡單修改就能符合你的要求,而對於專家級程式設計師,Seagull提供了一整套設定選項——包括最佳練習,標準的和模組化的代碼庫——來快速簡單地構建Web程式。Seagull有一個活躍的用戶社區以及豐富的支持文檔。
總結PHP開發框架對於各種能力層級的開發者都是一種減少重複編碼需要的良好方式,同時加快開發過程,確保創建Web程式時寫了正確的代碼。這不僅加速了複雜程式的開發,同時也減少了你代碼中的安全漏洞從而加強了PHP的安全性。
儘管一些專家級PHP程式設計師感覺沒必要使用開發框架開發Web程式,它們在快速軟體開發中仍然有巨大優勢,比如在緊迫的期限下。而對於初學者或中等開發者,開發框架能夠提高PHP學習效率同時促進練習編寫高質量的代碼且減少低質量代碼,後者因為PHP自身的“寬鬆”特性而常常出現。
今天有許多可以使用的PHP開發框架,因此開發者肯定能找到一款滿足他們在特性,支持,速度,可測度性等等方面的需求的框架。如今被開發者使用的頂級PHP開發框架包括:The Zend Framework,CakePHP,Symfony,Codelgniter和Seagull。
thinkphp
ThinkPHP是一個開源的PHP框架, 是為了簡化企業級套用開發和敏捷WEB套用開發而誕生的。最早誕生於2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,並且遵循Apache2開源協定發布。早期的思想架構來源於Struts,後來經過不斷改進和完善,同時也借鑑了國外很多優秀的框架和模式,使用面向對象的開發結構和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(標籤庫)、RoR的ORM映射和ActiveRecord模式,封裝了CURD和一些常用操作,單一入口模式等,在模版引擎、快取機制、認證機制和擴展性方面均有獨特的表現,也已經越來越多地受到國內PHP開發人員的認可。
使用ThinkPHP,你可以更方便和快捷的開發和部署套用,當然不僅僅是企業級套用,任何PHP套用開發都可以從ThinkPHP的簡單、兼容和快速的特性中受益。簡潔、快速和實用是ThinkPHP發展秉承的宗旨,
作為一個整體開發解決方案,ThinkPHP能夠解決套用開發中的大多數需要,因為其自身包含了底層架構、兼容處理、基類庫、資料庫訪問層、模板引擎、快取機制、外掛程式機制、角色認證、表單處理等常用的組件,並且對於跨版本、跨平台和跨資料庫移植都比較方便。並且每個組件都是精心設計和完善的,套用開發過程僅僅需要關注您的業務邏輯。
Canphp
Canphp是一個中國開源的php框架,主要的設計理念就是為了追求簡單,減少php初學者的學習成本,而且追求高效率,模版類不提供其他標籤,直接套用php的原始碼,還有它是微核心設計,移植性強,鬆散耦合等特點,能集成到你任何一個系統裡面。其中集成的http類相當的強大,採集圖片速度相當的快,為什麼這樣呢?因為適用了模擬異步多進程的原理。
InitPHP
InitPHP是一款輕量級的開源框架,採用分層體系架構,按需載入,具有高效、安全、易擴展、方便學習和修改框架本身等特點。InitPHP框架給您提供了詳細開發手冊,支持mysql分散式擴展,快取體系自由切換,原生態的視圖模型,多模型部署等。
kyphp
KYPHP是一個中國開源的PHP框架,kyphp嚴格尊守OOP和MVC的理念,具有控制項化、可擴展性強。kyphp設計理念是自由、簡單。既可以用php源碼編程,也可以使用標籤,支持多語言,多資料庫,多皮膚,多模型部署等。