Zend framework

Zend Framework（ZF）是一种开源的, 面向对象的WEB应用程序开发框架，在PHP7下运行，使用MVC软件架构，授權模式採用BSD许可证。

当前版本
Zend Framework当前版本为3.0系列。

历史 
Zend Framework的设计构思形成于2005年，由Ruby on Rails和Spring Framework的设计思路发展而来的。2005年10月，第一次Zend年会上，Zend公司宣布了ZF的开发计划。

2007年7月1日，Zend Framework 1.0发布。

2012年9月5日，Zend Framework 2.0正式版发布。

2016年6月28日 , Zend Framework 3.0正式發布。

许可证 
Zend Framework框架得到了开放源代码促进会（OSI）认可，以及BSD许可证，所有原码贡献者必须与Apache软件基金会签署一份贡献者许可协议（Contributor License Agreement，CLA），这一许可证和协议都是为了防止ZF在商业使用方面的知识产权问题。.

发起人和支持者 
Zend Framework的发起人是Zend Technologies公司的Andi Gutmans和Zeev Suraski，PHP底层的解析引擎的重构者。技术合作伙伴则包括IBM，Google, Microsoft, Adobe Systems，和StrikeIron.

配置要求 
最新版本的Zend Framework要求PHP 5.2.4或是更高版本。Zend Framework 1.7.0前的版本要求PHP 5.1.4或是更高版本。官方提供的ZF手册推荐使用PHP 5.2.3或是更高版本，因为新版本在编译方面有许多重大安全和性能方面的改善和提高。安装PHPUnit3.0或更高版本之后才能以PHP单元测试方式运行，许多组件同样要求PHP扩展。

特征 
Zend Framework特征包括

 所有组件完全面向对象，符合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%以上的的测试覆盖率。

争议 
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 ）。

参看 
 

 框架
 PHP
 BSD许可证

参考资料

外部链接 
 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手册

Web应用框架
Web 2.0
免费开发工具集和函数库
开源系统
PHP