PHP Zend Framework 2.0 正式版發佈

 著名php開源框架Zend Framework經歷了長達數年的開發,終於在2012年9月5日正式發佈了2.0版本,下簡稱ZF2。時隔Zend 1.0版本的發佈已經有5年之久。 

php的框架一直都是百家爭鳴的,但是作爲php官方運維的框架,Zend Framework在php開發者中的流行度並不高。其一是由於Zend Framework主要面向大型應用,對代碼規範以及程序結構有嚴格的規定,入門門檻較高。另一方面還是因爲Zend Framework整體的執行效率偏低,略顯笨重。

所以Zend小組本次可謂痛定思痛,ZF2並不像其他框架只是修修補補的更新,而是完全重寫了ZF1的所有代碼,主打的口號就是“高性能”。

來看一看ZF2都帶開了哪些新的特性:

 

1. 模塊化(ModuleManager)

比起ZF1來說,ZF2原生支持模塊的概念,任意第三方php程序,只要遵循Zend的編碼規範和代碼結構,都可以變成一個Zend模塊。目前已經有一批試驗階段的模塊出爐(參看ZF2 Modules)。 其中不乏像Doctrine ORM這樣優秀的項目。

可以預見的是,隨着ZF2的慢慢成熟,越來越多可以選擇的模塊將大量涌現,可能未來基於ZF2的項目開發,會像搭積木一樣輕鬆簡單。

2. 事件驅動(EventManager)

傳統程序中,代碼都是按線性順序執行的,所以開發中往往很難將一些功能獨立爲一個組件或模塊。

事件驅動,或者也可以叫鉤子(Hook),改變了普通程序流程化的運行方式,應用了事件驅動之後,程序將呈現“註冊事件” => “觸發事件”的跳躍式運行,可以在不影響原有程序代碼的,很容易的在任意位置加入新的業務邏輯,讓項目的開發變得極爲靈活。

3. 服務管理器(ServiceManager)

服務管理器的概念來自於"服務定位模式(Service locator pattern)"的編程思想。這種思想提倡將程序中的每一個獨立功能提取出來作爲一個“服務”,每一個服務都是獨立可喚醒的,只有服務被調用時,服務相關的程序纔會啓動。

這也就是ZF2性能提升的祕密所在,ZF2的MVC啓動流程中無處不體現ServiceLocator的思想,功能模塊的調用極爲“吝嗇”,想必會給以前對Zend性能有意見的開發者一個大大的驚喜。

4. 依賴注入(Di Dependency Injection)

依賴注入廣泛應用於Java的主流框架中,可以很好的解除大型應用中的耦合。ZF2引入Di也經過了反覆的考量和權衡,即使進入beta階段,Di仍然一度作爲ZF2的基本實現方案,整個Mvc的配置基於Di。最終爲了避免陷入Di可能造成的元數據式編程泥潭(Metaprogramming), Di只是作爲ZF2的底層實現,上層加入了ServiceManager。普通開發者在使用ZF2的過程中不需要接觸到Di的層面。不過這並不妨礙DI作爲一個優秀的php組件存在並發揮作用。

5. 社會化編程

ZF2的代碼完全託管在Github,藉助Github的優秀設計,任何人都可以輕鬆的通過fork參與ZF2的項目建設,甚至提交新的模塊功能。筆者AlloVince也幫助Zend小組修復了一些BUG,發現Zend小組響應非常快(從沒有超過24小時),對反饋的意見也會花時間認真解答。所以參與ZF2項目是參與php開源項目一個不錯的選擇。

總結

正如ZF2發佈信息中寫到的,沒有哪個框架是完美的,ZF2也不例外。所以作爲開發者要做的,不應該是糾結於哪個框架好哪個框架不好這種永遠也得不到結論的問題,而是針對不同的項目選擇合適的框架。

在現階段,開發大中型php應用,特別是商業應用和企業應用,ZF2是一個非常不錯的選擇,因爲ZF2有嚴格代碼規範,非常適合團隊開發。而ZF2作爲Zend官方的支持產品,整體的可靠性和BUG的響應速度也都是有保證的。

本文由http://www.lep.ccoo.cn/ 樂平在線整理髮布

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章