簡介
Zend Framework (ZF) 是用 PHP 5.3及更高版本 來開發 web 程式和服務的開源框架。ZF 用 100% 面向對象編碼實現。 ZF 的組件結構獨一無二,每個組件幾乎不依靠其他組件。這樣的松耦合結構可以讓開發者獨立使用組件。 我們常稱此為 “use-at-will”設計。
Zend Framework 項目的主要贊助者是 Zend Technologies,但許多 其它公司也貢獻了組件或重大功能。例如 Google、 Microsoft和 StrikeIron 作為夥伴提供了 web 服務接口和其它 希望給 Zend Framework 開發者使用的技術。
沒有活躍的 ZF 社區,Zend Framework 就不能交付和支持所有這些功能。社區成員包括貢獻者都可以在這些地方找到: mailing lists, IRC channels 和其它論壇。無論你有什麼關於 ZF 的問題,在社區里總能找到答案。
Zend Framework經歷了長達數年的開發,終於在2012年9月5日正式發布了Zend Framework 2,簡稱ZF2。時隔1.0版本的發布已經有5年之久。新的ZF2基本重寫了整個底層代碼,可以看作一個全新的框架,並且帶來了很多新的特性。
第2版概況
模組化
(ModuleManager)
比起ZF1來說,ZF2原生支持模組的概念,任意第三方php程式,只要遵循Zend的編碼規範和代碼結構,都可以變成一個Zend模組。
事件驅動
(EventManager)
傳統程式中,代碼都是按線性順序執行的,所以開發中往往很難將一些功能獨立為一個組件或模組。
事件驅動,或者也可以叫鉤子(Hook),改變了普通框架MVC流程化的運行方式,套用了事件驅動之後,程式將呈現“註冊事件” => “觸發事件”的跳躍式運行,可以在不影響原有程式代碼的,很容易的在任意位置加入新的業務邏輯,讓項目的開發變得極為靈活。
服務管理器
(ServiceManager)
服務管理器的概念來自於"服務定位模式(Service locator pattern)"的編程思想。這種思想提倡將程式中的每一個獨立功能提取出來作為一個“服務”,每一個服務都是獨立可喚醒的,只有服務被調用時,服務相關的程式才會啟動。
依賴注入
(Di Dependency Injection)
依賴注入廣泛套用於Java的主流框架中,可以很好的解除大型套用中的耦合。ZF2引入Di也經過了反覆的考量和權衡,即使進入beta階段,Di仍然一度作為ZF2的基本實現方案,整個Mvc的配置基於Di。最終為了避免陷入Di可能造成的元數據式編程泥潭(Metaprogramming),Di只是作為ZF2的底層實現,上層加入了ServiceManager。普通開發者在使用ZF2的過程中不需要接觸到Di的層面。不過這並不妨礙DI作為一個優秀的php組件存在並發揮作用。
社會化編程
ZF2的代碼完全託管在Github,藉助Github的優秀設計,任何人都可以輕鬆的通過fork參與ZF2的項目建設,甚至提交新的模組功能。
第1版概述
組件
ZF中的組件可以獨立使用,但如果將它們組合起來,就形成了一個強大而可擴展的web開發框架。 ZF 提供了強壯而高效的 MVC實現,易於使用的資料庫摘要和實現 HTML 表單解析、校驗和過濾的表單組件,這樣 開發者可以通過這些易用的、面向對象的接口聯合所有這些操作。其它組件如 Zend_Auth和 Zend_Acl通過通用 的證書(credential)存儲提供用戶認證和授權。還有其它實現的客戶庫來簡化訪問最流行的可用的 web 服務。 不論你的程式需要什麼,你都可能從 Zend Framework 中找到經過全面和嚴格測試的組件來使用,可以極為有效地減少開發時間。
Zend_Acl
提供輕量並靈活的訪問控制列表(ACL,AccessControlList)功能和許可權管理
Zend_Amf
Zend_Auth
主要用於認證,如用戶註冊,登錄
Zend_Cache
為應用程式提供快取服務
Zend_Config
簡化應用程式中配置數據的使用
Zend_Console_Getopt
幫助命令行程式解析它們的選項和參數
Zend_Controller
ZendFramework的MVC體系的核心部分
Zend_Currency
通用的貨幣處理方式,根據不同的地區,使用不同的貨幣格式
Zend_Date
處理日期
Zend_Db
提供基於PDO的資料庫操作方法
Zend_Debug
用於調試程式中表達式或變數的信息
Zend_Exception
ZendFramework中的異常處理類,ZendFramework拋出的所有異常都必須是它的子類的對象
Zend_Feed
提供對RSS和AtomFeed的處理功能
Zend_Filter
提供了一系列普遍使用的數據過濾器,同時也提供了一個簡單的過濾器機制,使多個過濾器以用戶定義的順序對一個單一的數據進行過濾
Zend_Form
結合其它組件來創建和處理表單元素
Zend_Gdata
Gdata是GoogleData的縮寫,Zend_Gdata提供了訪問和處理GoogleAPI的功能
Zend_Layout
實現經典的兩步視圖模型
Zend_Ldap
提供對LDAP(輕量級目錄訪問協定)授權的基本支持
Zend_Loader
提供動態載入檔案和類功能
Zend_Locale
本地化
Zend_Log
提供日誌記錄功能,支持多個日誌後端
Zend_Mail
提供郵件傳送功能
Zend_Measure
提供單位換算轉換功能
Zend_Memory
Zend_Memory組件用於在一個受限制的記憶體環境下管理數據
特性
Zend Framework 是用於 PHP 開發 Web 應用程式和 Web Service 程式的高品質開源框架。
利用 PHP 自身特性,Zend Framework 有很高的易用性和強大的功能。它提供了先進、健壯和安全的開發網站的解決方案。
代碼完全採用PHP5 面向對象編寫;豐富完善的組件支持;良好的 Ajax 支持;
模組化的結構設計,易於擴展;完善的文檔資料;靈活的架構設計;
MVC是提高程式的可維護性的方法:將這個程式代碼分為MVC三個部分
模型
關心的是欲顯示的數據細節。關注的應用程式的業務邏輯部分,關注的是如何使用資料庫來讀取和保存數據。
視圖
關心的是用戶顯示的部分,它通常是HTML
控制器
將特定的模型和視圖結合起來,保證將正確的數據顯示到頁面上。