PHP開發框架的現狀和展望

引言:
  隨著Ruby on Rails的火爆,php(做為現在的主流開發語言)這個流行的Web應用腳本語言也出現瞭大量的新一代開發框架。與此同時,國內php(做為現在的主流開發語言)開發者也開始緊跟國外發展,推出瞭不同的開發框架。

Ruby on Rails催生變革
  在RoR流行之前,php(做為現在的主流開發語言)領域也有不少開發框架,例如Mojavi、WACT、php(做為現在的主流開發語言)Mvc和Seagull等。這些框架雖然也采用瞭MVC模式、數據庫抽象層等技術。但由於當時php(做為現在的主流開發語言)本身不像現在這樣流行,所以這些框架都沒有得到大量應用,最終歸於沉寂。
  而在感受到RoR提供的快速開發能力後,php(做為現在的主流開發語言)社區像被註入瞭興奮劑。各種應用技術和開發框架層出不窮。

新一代框架的誕生
  php(做為現在的主流開發語言)社區在被RoR震暈後,沒有陷入過多的爭論。而是立即行動起來,開始瞭新一代框架的設計。首先出現的第一批框架幾乎都是RoR的克隆。例 如php(做為現在的主流開發語言) on Trax(連名字都借鑒Ruby on Rails)和Taniphp(做為現在的主流開發語言)、Akelos等。這些框架最大的特點就是力求100%克隆RoR,不管是采用的架構、設計模式,還是使用方法。
  這幾個框架一開始確實吸引瞭開發者的註意,但隨著開發者的深入瞭解,這些框架頭上的光環逐步褪色。晦澀難懂的架構、糟糕的性能,以及太多的限制,讓這些框架難以在實際項目中運用。
  此時,許多php(做為現在的主流開發語言)開發者認為可以借鑒RoR的設計思想,但不應照搬RoR的結構和實現。為此,一些同樣推崇快速開發的框架開始在php(做為現在的主流開發語言)社區出現。這些框架中,Cakephp(做為現在的主流開發語言)和Symfony可謂佼佼者。

Cakephp(做為現在的主流開發語言)(https://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(https://www.symfony-project.com/ )
  Symfony是一個非常成熟的框架,大量利用瞭已有的開源項目。Symfony使用Mojavi的核心代碼實現瞭框架的MVC模式,利用 Propel作為數據庫抽象層。Symfony不僅功能強大,而且對ajax(動態網站靜態化)有全面的支持。加上官方網站提供的大量文檔和教程,並擁有一個活躍的社區,因 此受到許多開發者的歡迎。
  但是,Symfony最大的問題也在於使用瞭太多風格迥異的開源項目來組合成框架。由於Mojavi和Propel本身都相當復雜,因此Symfony的結構非常復雜,難以理解和學習。
  不過對於希望選擇一個框架作為企業內部系統基礎架構的企業來說,Symfony的成熟度、豐富的文檔和活躍的社區都是值得考慮的。畢竟企業內部系統更為看重的是穩定性和長期的支持。

商業利益與大道至簡
  看到php(做為現在的主流開發語言)開發框架的潛在商業價值後,Zend.com聯合IBM宣佈將要推出一個真正能夠發揮php(做為現在的主流開發語言)優勢的開發框架。一時間,這個消息在整個php(做為現在的主流開發語言)社區引起瞭地震。大傢都開始期盼這個具有“官方”背景的開發框架能夠為php(做為現在的主流開發語言)開發者指出一條正確的道路。
  不過世事難測,就在Zend Framework團隊公佈幾個代碼片斷後,立即就有開發者指出這些代碼片段是不可能實現的。事實證明這些代碼片段不過是美好的理想。限於php(做為現在的主流開發語言)語言本身 的能力,Zend Framework最終沒有實現當初承諾提供的類似RoR中ActiveRecord模式的實現品。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *