Composer不安装单体框架,而是按需拉取Laminas独立组件;官方推荐Mezzio(PSR-15微框架)或laminas-mvc组件组合,废弃laminas/laminas包及laminas-tool。

Composer 本身不“安装框架”,而是通过它拉取 Laminas 的组件包;Laminas 已不再维护单体框架,官方推荐按需组合 laminas-mvc、laminas-http 等独立组件,或直接使用 laminas-api-tools / mezzio(后者是现代 PSR-15 微服务方案)。
用 composer create-project 初始化 Mezzio(Laminas 官方推荐的现代替代)
Mezzio 是 Laminas 社区当前主推的 PSR-15 兼容微框架,比旧版 laminas-mvc 更轻、更灵活,且持续更新。直接创建项目比手动 require 组件更可靠:
composer create-project mezzio/mezzio-skeleton my-laminas-app
执行时会交互选择:容器(Pimple / laminas-servicemanager / PHP-DI)、模板引擎(Plates / Twig / None)、HTTP 客户端等。选完即生成可运行结构。
常见卡点:
- PHP 版本必须 ≥ 8.0(Mezzio 4+ 不支持 7.x)
- 若提示
zlib_decode(): data error,是 Composer 缓存损坏,运行composer clear-cache后重试 - 国内用户常因 Packagist 镜像未同步导致
mezzio-skeleton找不到,临时切回官方源:composer config -g repo.packagist composer https://packagist.org
手动 require laminas-mvc(仅限遗留项目迁移)
如果你必须复用旧 MVC 结构(如从 Zend Framework 2/3 升级),不要装 laminas/laminas(该包已废弃且为空),而是明确引入核心组件:
composer require laminas/laminas-mvc \ laminas/laminas-servicemanager \ laminas/laminas-router \ laminas/laminas-http \ laminas/laminas-view
注意:
-
laminas-mvc默认不带命令行工具,需额外加laminas/laminas-development-mode启用开发模式 - 入口文件
public/index.php必须显式调用Laminas\Mvc\Application::init(),不能只 includeinit_autoloader.php(该文件在 Laminas 中已移除) - 模块配置必须放在
config/modules.config.php,且返回数组,不能用旧的return new Module();方式
vendor/autoload.php 加载失败或类找不到?检查 autoloader 生成逻辑
Laminas 组件严格依赖 Composer 的 PSR-4 自动加载,但部分组件(如 laminas-config)同时提供 classmap 和 psr-4。若运行时报 Class not found:
- 确认
composer install后vendor/autoload.php存在且被入口文件正确 require - 检查
composer.json中是否误删了"autoload": {"psr-4": {...}}段(Mezzio 脚手架默认有,手动建项目易遗漏) - 运行
composer dump-autoload -o强制优化加载器,避免开发环境因文件变动未刷新映射 - 若用 Docker,确保
vendor/目录没被 .dockerignore 排除,且容器内 PHP 版本与宿主机一致
为什么不用 composer global install laminas-tool?
laminas-tool 已于 2020 年归档,不再维护。其功能(生成控制器、模块等)已被 Mezzio 的 mezzio-cli 取代:
composer require --dev mezzio/mezzio-cli
之后可用:
./vendor/bin/mezzio generate:handler PingHandler
关键区别:
-
mezzio-cli生成的是 PSR-15 中间件,不是 MVC 的 Controller - 所有生成命令基于当前项目的配置(如容器类型),不会硬编码依赖
- 不修改全局 Composer 环境,避免不同项目 PHP 版本冲突
真正容易被忽略的是:Laminas 生态已彻底转向“组件化 + PSR 标准”,任何试图复刻 Zend Framework 2 时代单体框架行为的操作,都会在依赖解析、生命周期管理或测试集成上遇到隐性阻力。










