Zend Framework
定义
Zend Framework 是一组用 PHP 编写的开发包集合,用于构建 Web 应用与 Web 服务,代码全部以面向对象方式实现,并遵循 PHP 语言的大部分现代特性[1]。官方将其定位为“组件库 + 可选 MVC 层”的结构:既可把某个组件单独引入其他项目,也可把全部组件组合成一套完整的 MVC 应用框架。
框架对组件的依赖关系做了刻意削弱,每个组件尽量少引用其他组件,官方称这种思路为“按需使用”(use-at-will)[2]。以 MVC 为核心的部分包含路由、服务管理、事件管理、数据库抽象层,以及负责表单渲染、校验与过滤的表单组件,另提供认证与访问控制类组件[2][4]。
原理
在 MVC 模式下,应用请求先进入前端控制器,由路由组件解析出模块、控制器与动作,再交给对应的控制器处理;控制器通过服务管理器获取依赖对象,把数据交给视图脚本渲染,最后形成响应返回客户端[4]。3.0 版本的应用启动时可注入配置、服务管理器、事件管理器、模块管理器、请求与响应等对象,框架据此装配运行环境[4]。
请求处理流程可简示为:
$请求 \rightarrow 路由解析 \rightarrow 控制器 \rightarrow 服务管理器取依赖 \rightarrow 视图渲染 \rightarrow 响应$
组件通过 Composer 安装与解析依赖,测试使用 PHPUnit,持续集成服务采用 Travis CI,并遵循 PHP-FIG 制定的规范[1]。框架还实现了 PSR-7 定义的 HTTP 消息接口;3.0 版本起提供基于 PSR-7 的中间件基础组件与微框架,作为 MVC 全栈方案的并行选择。
发展历程
2005 年前后,Ruby on Rails 与 Spring Framework 等框架在 Web 开发中流行,Zend Framework 的构想由此形成;2005 年 10 月,在第一届 Zend 会议上该框架被公开提出[5]。2006 年初,Zend Technologies 以 BSD 许可证发布了框架的前 alpha 版本[6]。2007 年 7 月,首个生产版本 Zend Framework 1.0 发布[7]。
2012 年 9 月,Zend Framework 2.0 发布,代码经过大规模重写,因采用 PHP 5.3 的新特性而与 1.x 不向后兼容;该版本引入模块化结构、事件驱动机制、服务管理器与依赖注入等设计,累计下载量超过 1500 万次[2][8]。
2016 年 6 月 28 日,Zend Framework 3.0 发布,官方测得在 PHP 5 下应用速度最高提升约 4 倍,并加入对 PHP 7 的支持,同时把各组件拆分为独立版本管理的包[9]。同一年,1.x 系列被宣布停止开发并进入生命周期终止状态[9]。
2019 年 4 月,项目方宣布将 Zend Framework 及其子项目转为由 Linux 基金会托管的开源项目,并启用新名称 Laminas[10]。2019 年 12 月 31 日,代码库迁移至新的仓库,项目改由独立的技术指导委员会领导;原有的 Zend Framework、Apigility、Expressive 仓库被设为只读归档,相关包在包管理平台上标记为已弃用,官方表示原框架不会继续开发新功能[3]。
应用
Zend Framework 在 PHP 生态中被较广泛采用,在企业级市场尤为集中,据项目方说明,它构成过大量业务应用与服务的底层,包括电子商务平台、内容管理、医疗系统、娱乐平台与门户、消息服务以及各类 API[3]。
具体使用场景包括:借助数据库抽象层接入多种关系型数据库,通过认证与访问控制组件管理用户权限,利用表单组件完成 HTML5 表单的渲染、校验与过滤,以及通过缓存组件把缓存写入内存或文件系统[2][8]。此外,框架提供面向外部网络服务的客户端库,方便调用第三方接口[2]。Zend Technologies 之外,Google、Microsoft 等企业也曾与 Zend 合作,为框架开发者提供接口支持[1]。
局限
Zend Framework 2 与 1.x 之间没有平滑的升级路径,架构上的大幅调整使两者基本不兼容,早期项目若要升级需要较多改动[11]。与之相对,2 到 3 的迁移被设计为增量式升级,官方在 2.x 后期即提供向前兼容特性以减轻迁移成本。
框架的 MVC 结构较重,前端控制器在每一次请求中都要重新初始化,这一过程带来明显的性能开销,被视作其主要性能瓶颈之一[8]。也有开发者因此改用 C 语言编写的 PHP 扩展形式重写框架,使前端控制器只需全局初始化一次[8]。
从维护状态看,Zend Framework 已不再有新版本与新特性,全部后续开发转入 Laminas 项目;原有的 Zend Framework 包虽仍可安装,但不再更新,官方建议使用者迁移到对应的 Laminas 包[3]。安装整个框架的方式也不再被推荐,因为该包只是聚合众多组件的元包,多数项目实际只需要其中一部分组件[12]。
参见
-
PHP —— Zend Framework 所基于的服务器端脚本语言。
-
MVC —— 框架默认采用的应用架构模式。
-
Composer —— 框架安装与依赖管理所使用的工具。
-
Laminas Project —— 承接 Zend Framework 后续开发的开源项目。
-
Linux 基金会 —— 2020 年起托管 Laminas 项目的组织。
参考资料
- About - Zend Framework [引用日期2026-10-29]
- Manual - Documentation [引用日期2026-10-29]
- 2020-01-24-laminas-launch [引用日期2026-10-29]
- Introduction [引用日期2026-10-29]
- 開発元 | Laminas Project [引用日期2026-10-29]
- Zend Framework [引用日期2026-10-29]
- acm.org 上的网页 [引用日期2026-10-29]
- Zend framework [引用日期2026-10-29]
- zend-php-framework-upgrade-focuses-on-performance-middleware [引用日期2026-10-29]
- From Zend to Laminas [引用日期2026-10-29]
- ZF3 - Zend Framework 3.0 Released [引用日期2026-10-29]
- github.com 上的网页 [引用日期2026-10-29]