PHP開發架構的現狀和展望

來源:互聯網
上載者:User



隨著Ruby on Rails的火爆,PHP這個流行的Web應用指令碼語言也出現了大量的新一代開發架構。與此同時,國內PHP開發人員也在北京寫字樓開始緊跟國外發展,推出了不同的開發架構。

Ruby on Rails催生變革
  在RoR流行之前,PHP領域也有不少開發架構,例如Mojavi、WACT、PHPMvc和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(http://www.cakephp.org/)
  CakePHP充滿了RoR的影子,從ActiveRecord模式到視圖的布局管理都和RoR非常相似。而且CakePHP一開始也嘗試實現與 RoR一樣的許多東西。但CakePHP的Team Dev後來發現PHP語言和Ruby語言存在巨大區別,因此RoR中的許多設計即便能夠在PHP中實現,也是缺乏實用價值的。
  CakePHP在發展中逐步走出了RoR的陰影,開始探索更能發揮PHP語言本身優勢的架構和實現。因此有一段時間CakePHP的API發生了劇烈的變化,以致其他開發人員紛紛停下腳步處於觀望狀態。
  但由於前期一些架構的不合理和對RoR太多的模仿,導致CakePHP的核心部分越來越難以理解,運行效能也不盡人意。而且CakePHP將一個龐大的資料庫操作對象作為所有業務對象的基礎。這雖然利於快速開發,但卻導致對商務邏輯對象的測試非常困難。
  對於較小型的項目,CakePHP非常理想。北京鮮花禮品出色的快速開發能力、豐富的API和詳盡的文檔都可以協助開發人員很快完成工作。但隨著項目規模的增加,CakePHP的局限性也變得突出。

Symfony(http://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模式的實現品。

Zend Framework(http://framework.zend.com/)
  Zend Framework大量應用了PHP5中物件導向的新特徵:介面、異常、抽象類別、SPL等等。這些東西的應用讓Zend Framework具有高度的模組化和靈活性。同時,因為嚴格遵循“針對介面編程”和“單一對象職責”等原則,讓Zend Framework很有希望成為一個出色的公司專屬應用程式開發架構HKRFP。
  但不幸的是Zend Framework直到今天,也沒有做出更多的突破。在使用Zend Framework開發時,架構對應用程式自身最重要的領域邏輯分離沒有提供任何協助
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.