Zend framework

Zend Framework
開發者Zend Technologies
当前版本
  • 3.0.0 (2016年6月28日;穩定版本)[1][2]
  • 2.3.0 (2024年1月8日;穩定版本)[3]
編輯維基數據鏈接
源代码库
  • github.com/laminas/laminas-mvc-skeleton
編輯維基數據鏈接
操作系统跨平台
类型框架
许可协议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公司宣布了ZF的开发计划。[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框架得到了开放源代码促进会(OSI)认可,以及BSD许可证,所有原码贡献者必须与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,支持多种数据库,如MySQLOracleIBM DB2Microsoft SQL ServerPostgreSQLSQLite和Informix Dynamic Server。
  • 支持多种邮件收发系统,如mbox,Maildir,POP3IMAP4
  • 灵活的缓存机制,支持多种缓存方式,可以将缓存写入内存或是文件系统

创建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 (页面存档备份,存于互联网档案馆))。

参看

  • Free softwareFree software主题

参考资料

  1. ^ https://github.com/zendframework/zendframework/releases/tag/release-3.0.0; 出版日期: 2016年6月28日.
  2. ^ https://framework.zend.com/blog/2016-06-28-zend-framework-3.html; 出版日期: 2016年6月28日.
  3. ^ Release 2.3.0. 2024年1月8日 [2024年1月19日]. 
  4. ^ Introduction to Zend Framework. ZF Programmer's Reference Guide. [2009-02-12]. (原始内容存档于2009-02-11). 
  5. ^ 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). 
  6. ^ Gutmans, Andi. Zend Framework 1.0 Released!. Andi on Web & IT. 2007-07-01 [2008-07-14]. (原始内容存档于2021-04-17). 
  7. ^ Zend Framework 2.0.0 STABLE Released!. Zend Technologies. 2012-09-05 [2012-09-05]. (原始内容存档于2021-07-21). 
  8. ^ Company, Zend, a Rogue Wave. Zend Framework - Blog - Zend Framework 3 Released!. framework.zend.com. [2016-10-12]. (原始内容存档于2022-01-24). 
  9. ^ 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). 
  10. ^ History of PHP and related projects. The PHP Group. [2009-02-11]. (原始内容存档于2008-07-08). 
  11. ^ LaMonica, Martin. IBM backs open-source Web software. cnet.com. 2005-02-25 [2009-02-11]. 
  12. ^ Kernel, Sean Michael. Google Data Joins PHP Zend Framework. internetnews.com. 2006-12-20 [2009-02-11]. (原始内容存档于2021-06-12). 
  13. ^ Krill, Paul. Microsoft, Zend boost PHP for Windows. infoworld.com. 2006-10-31 [2009-02-11]. (原始内容存档于2009-03-10). 
  14. ^ Potter, Mike. Adobe Contributing AMF Support to Zend Framework. The Official Flex Team Blog. 2008-07-31 [2009-02-11]. (原始内容存档于2009-02-07). 
  15. ^ StrikeIron Featured Partners. [2009-02-11]. (原始内容存档于2009-04-11). 
  16. ^ Zend Framework Requirements. ZF Programmer's Reference Guide. [2009-02-12]. (原始内容存档于2009-02-14). 
  17. ^ About Zend Framework. [2009-02-11]. (原始内容存档于2009-02-11). 
  18. ^ 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手册
C++
  • CppCMS英语CppCMS
  • Wt英语Wt (web toolkit)
CLI
  • ASP.NET
    • Core
    • AJAX
    • 动态数据英语ASP.NET Dynamic Data
    • MVC
    • Razor英语ASP.NET Razor
    • Web Forms
  • DNN英语DotNetNuke
  • BFC英语Base One Foundation Component Library
  • MonoRail英语MonoRail (software)
  • OpenRasta英语OpenRasta
  • Umbraco
ColdFusion
  • CFWheels
  • ColdBox Platform英语ColdBox Platform
  • ColdSpring英语ColdSpring Framework
  • Fusebox英语Fusebox (programming)
  • Mach-II英语Mach-II
  • Model-Glue英语Model-Glue
Common Lisp
  • Caveman2英语Caveman2
  • CL-HTTP英语CL-HTTP
  • UnCommon Web英语UnCommon Web
  • Weblocks
D
  • Vibe.d英语Vibe.d
Haskell
  • Happstack英语Happstack
  • Yesod英语Yesod (web framework)
  • Snap英语Snap (web framework)
Java
  • AppFuse英语AppFuse
  • Flexive英语Flexive
  • Grails英语Grails (framework)
  • GWT
  • ICEfaces英语ICEfaces
  • ItsNat英语ItsNat
  • JavaServer Faces
  • JHipster英语JHipster
  • Jspx英语Jspx-bay
  • JWt英语JWt (Java web toolkit)
  • OpenXava英语OpenXava
  • Play
  • Reasonable Server Faces英语Reasonable Server Faces
  • Remote Application Platform英语Remote Application Platform
  • RIFE英语RIFE
  • Seam英语JBoss Seam
  • Spring
  • Stripes英语Stripes (framework)
  • Struts
  • Tapestry
  • Vaadin英语Vaadin
  • Vert.x
  • WebWork英语WebWork
  • Wicket
  • WaveMaker英语WaveMaker
  • ZK
JavaScript
  • Ample SDK英语Ample SDK
  • Angular英语Angular (application platform)/AngularJS
  • Backbone.js
  • Chaplin.js英语Chaplin.js
  • Closure英语Google Closure Tools
  • Dojo Toolkit
  • Ember.js
  • Extjs
  • JQuery
  • Meteor英语Meteor (web framework)
  • MooTools英语MooTools
  • Node.js
  • Prototype
  • React
  • Rico
  • script.aculo.us英语script.aculo.us
  • Sencha Touch英语Sencha Touch
  • SproutCore英语SproutCore
  • Vue.js
  • Wakanda英语Wakanda (software)
Perl
  • Catalyst
  • Dancer英语Dancer (software)
  • Mason英语Mason (Perl)
  • Maypole
  • Mojolicious英语Mojolicious
  • WebGUI
PHP
  • CakePHP英语CakePHP
  • CodeIgniter
  • Fat-Free
  • FuelPHP
  • Gyroscope英语Gyroscope (software)
  • Horde英语Horde (software)
  • Kohana英语Kohana (framework)
  • Laravel
  • Lithium英语Lithium (software)
  • Midgard英语Midgard (software)
  • MODX英语MODX
  • Nette英语Nette Framework
  • Phalcon
  • PRADO英语PRADO (framework)
  • Qcodo英语Qcodo
  • Silex英语Silex (web framework)
  • SilverStripe
  • Symfony
  • TYPO3
  • Xaraya英语Xaraya
  • XOOPS
  • Yii英语Yii
  • Zend framework
Python
Ruby
  • Camping英语Camping (microframework)
  • Merb英语Merb
  • Padrino英语Padrino (web framework)
  • Ruby on Rails
  • Sinatra英语Sinatra (software)
Rust
  • Yew
Scala
  • Lift
  • Play
  • Scalatra英语Scalatra
Smalltalk
  • AIDA/Web英语AIDA/Web
  • Seaside英语Seaside (software)
其他语言
  • Application Express英语Oracle Application ExpressPL-SQL
  • Grails英语Grails (framework)Groovy
  • Kepler英语Kepler (software)Lua
  • OpenACS英语OpenACSTcl
  • Phoenix英语Phoenix (web framework)Elixir
  • SproutCore英语SproutCoreJavaScript-Ruby
  • YawsErlang
规范控制数据库: 各地 編輯維基數據鏈接
  • 德国
  • 捷克