Laminas API Tools 已于 2022 年终止维护,不兼容 PHP 8.1+ 及 PSR-15/PSR-17,依赖过时组件且无安全更新,新项目应避免使用,转而采用 Mezzio、Symfony Serializer、Swagger-PHP 等现代标准组件组合。

Laminas API Tools 已于 2022 年正式进入维护终止(EOL)状态,官方不再发布新功能或安全更新,且其依赖的 Zend Framework 组件已整体迁移至 Laminas 项目并逐步弃用。直接新建项目使用它,等于主动选择一条无法升级、缺乏社区支持、与现代 PHP(8.1+)、PSR-15/PSR-17 不兼容的技术路径。
为什么 LaminasApiToolsApigility 不该出现在新项目中
你看到的“快速生成 REST API”宣传,实际建立在几个已被淘汰的前提上:
-
ZendMvc的模块化结构耦合严重,路由/认证/内容协商全靠配置数组驱动,PHPStorm 几乎无法跳转到控制器方法 - 内置的
HalJsonRenderer强制返回 HAL+JSON,但真实业务中更常需要简单 JSON、OpenAPI 文档、或 GraphQL 兼容层 - Admin UI 依赖 jQuery 1.x 和老旧的 RequireJS,Chrome 110+ 已开始报
Deprecation warning: Synchronous XMLHttpRequest - 生成的代码里大量使用
getEventManager()和setServiceLocator()—— 这些是 PHP 5.6 时代的反模式,与容器注入(PSR-11)完全冲突
替代方案:用 laminas-api-tools/api-tools 吗?
不。这个 Composer 包只是 EOL 前最后发布的空壳,require 它会拉取一堆已标记 @deprecated 的子包(如 laminas-api-tools/api-tools-admin),且安装时会提示:
Package laminas-api-tools/api-tools is abandoned, you should avoid using it. Use laminas-api-tools/api-tools-skeleton instead.
而 laminas-api-tools/api-tools-skeleton 本身就是一个冻结在 2021 年的模板仓库,最后一次 commit 是 “chore: update dependencies to latest v1.x”,里面仍含 zendframework/zend-diactoros(已重命名为 laminas/laminas-diactoros)。
真正可行的“快速生成规范 REST API”路径
放弃“开箱即用的 API 工具”,转为组合轻量、活跃、标准兼容的组件:
- 路由用
mezzio/mezzio-router(原 Zend Expressive)—— 支持 FastRoute + PSR-15 中间件,无 MVC 拖累 - 序列化统一走
symfony/serializer或jms/serializer,避免 HAL 锁死格式 - OpenAPI 文档生成用
zircote/swagger-php(注解式) +swagger-api/swagger-ui(静态托管),比 Apigility 的 Admin UI 更易集成 CI/CD - 认证直接对接
laminas-authentication或更现代的league/oauth2-server,不走它那套zf-mvc-auth配置魔方 - 数据库层用
doctrine/orm或laravel/octane(如果选 Laravel 生态),而非 Apigility 绑定的zf-hal+zf-content-negotiation
一个最小可运行示例只需 3 个文件:public/index.php(PSR-7 请求入口)、src/Handler/UserListHandler.php(实现 RequestHandlerInterface)、config/routes.php(定义 GET /api/users → handler 映射)。
如果你必须维护旧 Apigility 项目
重点不是“怎么生成”,而是“怎么安全过渡”:
- 先运行
composer update --with-dependencies,检查是否出现Class ZendStdlibAbstractOptions not found—— 这说明底层laminas-zendframework-bridge未正确加载,需手动加"autoload": {"psr-4": {"Zend\": "vendor/laminas/laminas-zendframework-bridge/src/Zend/"}} - 把所有
zf-apigility相关配置从config/autoload/global.php拆出,改用laminas-config-aggregator分层加载,否则 PHP 8.2 的Dynamic property access警告会炸屏 -
zf-content-validation的InputFilterProviderInterface在 PHP 8.1+ 下会因返回类型声明缺失报TypeError,必须补全: array
老项目能跑通不等于能长期维护。HAL 格式、XML 响应、WADL 文档这些设计,在 2024 年的微服务网关(如 Kong、Traefik)和前端框架(Remix、Next.js)眼里,全是额外解析成本。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











