Zend framework
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | 此條目的語調或風格或許不合百科全書。 (2021年11月24日) |
![]() | |
開發者 | Zend Technologies |
---|---|
目前版本 | |
原始碼庫 | |
作業系統 | 跨平台 |
類型 | 框架 |
特許條款 | BSD特許條款 |
網站 | framework.zend.com |
Zend Framework(ZF)是一種開源的, 物件導向的WEB應用程式開發框架,在PHP7下執行,使用MVC軟件架構,特許模式採用BSD特許條款。[4]
目前版本
Zend Framework目前版本為3.0系列。
歷史
Zend Framework的設計構思形成於2005年,由Ruby on Rails和Spring Framework的設計思路發展而來的。2005年10月,第一次Zend年會上,Zend公司宣佈了Zend Framework的開發計劃。[5]
2007年7月1日,Zend Framework 1.0釋出。[6]
2012年9月5日,Zend Framework 2.0正式版釋出。[7]
2016年6月28日 , Zend Framework 3.0正式發佈。[8]
特許條款
Zend Framework框架得到了BSD特許條款以及開放原始碼促進會(OSI)認可,所有原碼貢獻者必須與Apache軟件基金會簽署一份貢獻者特許條款(Contributor License Agreement,CLA),這一特許條款和協定都是為了防止ZF在商業使用方面的知識產權問題。[9].
發起人和技術合作夥伴
Zend Framework的發起人是Zend Technologies公司的Andi Gutmans和Zeev Suraski,PHP底層的解析引擎的重構者。[10]技術合作夥伴則包括IBM[11],Google[12], Microsoft[13], Adobe Systems[14],和StrikeIron[15].
組態版本要求
最新版本的Zend Framework要求PHP 5.2.4或是更高版本。Zend Framework 1.7.0前的版本要求PHP 5.1.4或是更高版本。官方提供的ZF手冊推薦使用PHP 5.2.3或是更高版本,因為新版本在編譯方面有許多重大安全和效能方面的改善和提高。安裝PHPUnit3.0或更高版本之後才能以PHP單元測試方式執行,許多組件同樣要求PHP擴充。[16]
特徵
Zend Framework特徵包括[17]
- 所有組件完全物件導向,符合E STRICT錯誤報表。
- 鬆耦合(Use-at-will)設計可以讓開發者獨立使用組件,每個組件幾乎不依賴其他組件。
- 預設提供了強壯而高效的MVC實現和基於PHP的模板。
- 經由PDO,支援多種資料庫,如MySQL,Oracle,IBM DB2,Microsoft SQL Server,PostgreSQL,SQLite和Informix Dynamic Server。
- 支援多種郵件收發系統,如mbox,Maildir,POP3和IMAP4
- 靈活的快取機制,支援多種快取方式,可以將快取寫入主記憶體或是檔案系統。
建立Zend Framework應用
建立一個Zend Framework應用程式可以通過zf tool工具,以命令列的方式來搭建一個典型的應用結構,然後在此基礎上進行開發,這種自動化建立應用結構的方法通常也被稱為「腳手架」功能。Zend Framework曾被普遍認為學習曲線較高,上手比較難,但zf tool"腳手架"大大簡化了應用的建立和初始組態過程,如果配合上安裝好的Zend Studio環境,使框架可以在短短數分鐘之內就可以完成組態執行起來。
代碼、檔案的測試標準
所有貢獻的代碼,在加入到發行版本之前,都必須先通過ZF公司制訂的嚴格的測試標準。所有代碼必須符合ZF代碼標準,單元測試達到80%以上的的測試覆蓋率。[18]
爭議
Zend Framework的早期版本,類別的成員函數定義與它上面寫的註解在資料型態根本對不起來,導致在Eclipse IDE for PHP Developers會瘋狂出現一堆【cannot be resolved to a type】的錯誤訊息,需手動進專案的設置把【Undefined type】改為警告。
和其他大型Web框架類似,Zend Framework有一個非常龐大的前端控制器(Front Controller)。但由於PHP執行時環境的特殊性(每次請求都是獨立的上下文),這個前端控制器不得不在每次請求被重新初始化一次。這帶來了非常大的效能開銷,被認為是Zend Framework的效能瓶頸所在。同時由於前端控制器模式和PHP的格格不入,許多人甚至認為PHP不適宜使用大型框架。類似的還有Zend_Db取得資料庫中表的結構資訊,也是每次請求都重複進行的操作。事實上,Zend_Db是可以快取表結構的(通過Memcached、Apc一類的外部緩衝記憶體)。但前端控制器設計的複雜確實不是快取可以解決的。這並不說明Zend Framework設計有問題,而是說明並不是所有的專案、應用都適合使用Zend Framework,要靠專案決策者針對自身情況權衡。
模仿
Zend Framework本身的結構很大程度的模仿了Ruby on Rails,但又做了足夠的改動使其適應PHP的特點。所以很多PHP框架都或多或少的借鑑、參考了Zend Framework。由於不滿Zend Framework中前端控制器重複初始化帶來的不必要開銷,甚至有開發者用C/C++ 寫PHP擴充的方式,重新實現了Zend Framework,使前端控制器只需要全域初始化一次(Yaf Framework (頁面存檔備份,存於互聯網檔案館)及Phalcon PHP (頁面存檔備份,存於互聯網檔案館))。
參看
參考資料
- ^ https://github.com/zendframework/zendframework/releases/tag/release-3.0.0; 出版日期: 2016年6月28日.
- ^ https://framework.zend.com/blog/2016-06-28-zend-framework-3.html; 出版日期: 2016年6月28日.
- ^ Release 2.3.0. 2024年1月8日 [2024年1月19日].
- ^ Introduction to Zend Framework. ZF Programmer's Reference Guide. [2009-02-12]. (原始內容存檔於2009-02-11).
- ^ Morgan, Oonagh. Zend Announces Industry-wide PHP Collaboration Project at its Inaugural PHP Conference. Zend Technologies. 2005-10-19 [2008-07-14]. (原始內容存檔於2009-01-01).
- ^ Gutmans, Andi. Zend Framework 1.0 Released!. Andi on Web & IT. 2007-07-01 [2008-07-14]. (原始內容存檔於2021-04-17).
- ^ Zend Framework 2.0.0 STABLE Released!. Zend Technologies. 2012-09-05 [2012-09-05]. (原始內容存檔於2021-07-21).
- ^ Company, Zend, a Rogue Wave. Zend Framework - Blog - Zend Framework 3 Released!. framework.zend.com. [2016-10-12]. (原始內容存檔於2022-01-24).
- ^ Gutmans, Andi. Zend Framework(post is too long so make sure to grab coffee). Andi on Web & IT. 2005-10-27 [2009-02-11]. (原始內容存檔於2011-07-08).
- ^ History of PHP and related projects. The PHP Group. [2009-02-11]. (原始內容存檔於2008-07-08).
- ^ LaMonica, Martin. IBM backs open-source Web software. cnet.com. 2005-02-25 [2009-02-11].
- ^ Kernel, Sean Michael. Google Data Joins PHP Zend Framework. internetnews.com. 2006-12-20 [2009-02-11]. (原始內容存檔於2021-06-12).
- ^ Krill, Paul. Microsoft, Zend boost PHP for Windows. infoworld.com. 2006-10-31 [2009-02-11]. (原始內容存檔於2009-03-10).
- ^ Potter, Mike. Adobe Contributing AMF Support to Zend Framework. The Official Flex Team Blog. 2008-07-31 [2009-02-11]. (原始內容存檔於2009-02-07).
- ^ StrikeIron Featured Partners. [2009-02-11]. (原始內容存檔於2009-04-11).
- ^ Zend Framework Requirements. ZF Programmer's Reference Guide. [2009-02-12]. (原始內容存檔於2009-02-14).
- ^ About Zend Framework. [2009-02-11]. (原始內容存檔於2009-02-11).
- ^ Zend Framework Contributor Guide. 2006-07-01 [2008-07-14]. (原始內容存檔於2008-05-18).
外部連結
- Official Website* (頁面存檔備份,存於互聯網檔案館)
- Zend Framework的例子(ZfEx) (頁面存檔備份,存於互聯網檔案館)
- Zend Framework 2.0資料匯總
指南
- Rob Allen's popular tutorial (頁面存檔備份,存於互聯網檔案館)
- Lyndon Baptiste's tutorial
- Official ZF Quickstart
- Examples notes
- Zend Framework手冊
|
|