Laminas mvc 采用松耦合模块化架构,基于 PSR-7/PSR-15 标准,通过 laminas-mvc-skeleton 快速搭建;支持模块创建、路由配置、控制器-模型-视图分离、ServiceManager 依赖注入及多模板引擎扩展。

在 Zend Framework(现为 Laminas)中搭建 MVC 结构,核心是利用其模块化设计和 PSR-7/PSR-15 兼容的中间件机制,而非传统 Zend Framework 1 那种“控制器-视图-模型”硬绑定方式。现代 Laminas(原 Zend Framework 3+)推荐使用 Mezzio(专为 PSR-15 中间件设计的微框架)或 Laminas MVC(保留传统 MVC 风格但更轻量)。下面以 Laminas MVC 为例,说明如何快速搭建一个基础 MVC 应用。
安装并初始化 Laminas MVC 应用
使用 composer 创建新项目:
- 运行
composer create-project laminas/laminas-mvc-skeleton myapp - 进入项目目录:
cd myapp - 启动内置服务器:
php -S 0.0.0.0:8080 -t public/ public/index.php
访问 http://localhost:8080 即可看到默认欢迎页。骨架已预置了标准 MVC 目录结构:module/(模块)、config/(配置)、public/(入口和静态资源)。
创建一个简单模块(如 Blog 模块)
Laminas MVC 基于模块组织,每个模块独立包含 Controller、Model、View:
立即学习“PHP免费学习笔记(深入)”;
RPCMS是一款基于PHP+MYSQL的轻量型内容管理/博客系统,支持PHP5.6版本以上,支持win/Linux系统。它自主研发的RP框架(OPP方式),采用MVC架构搭建的高效、稳定的内容管理系统。灵活小巧,但有着强大的扩展性、丰富的插件接口和大量的模板。统一采用模板标签,轻松上手,让开发更方便!智能缓存机制让网站运行方面大幅度提高。系统特点:源码简洁、体积轻巧、功能丰富、安全、灵活等特点,完
1 - 执行
./vendor/bin/laminas-module-create Blog(需安装laminas/laminas-modulemanager和 CLI 工具) - 模块自动生成在
module/Blog/下,含src/Controller/、config/module.config.php、view/等 - 在
config/modules.config.php中添加'Blog'到模块列表 - 在
module/Blog/config/module.config.php中配置路由,例如匹配/blog到IndexController::indexAction
编写控制器与视图
控制器继承 LaminasMvcControllerAbstractActionController,返回 ViewModel 或响应对象:
- 编辑
module/Blog/src/Controller/IndexController.php,添加indexAction()方法 - 在该方法中可调用模型(如从
src/Model/Posttable.php获取数据),再用$this->layout()->setVariable('title', 'My Blog')传值 - 对应视图文件放在
module/Blog/view/blog/index/index.phtml,可直接用= $this->title ?>输出
模型层建议使用 Table Data gateway + Entity 模式
Laminas 不强制模型实现,但推荐结合 LaminasDb 实现数据访问:
- 在
module/Blog/src/Model/下创建PostTable.php(封装数据库查询)和Post.php(实体类) - 在
module.config.php中通过ServiceManager配置PostTable工厂,注入AdapterInterface - 控制器中用
$this->serviceLocator->get(PostTable::class)获取实例(或更好:通过构造函数依赖注入)
基本上就这些。Laminas MVC 的 MVC 是松耦合的,控制器不直接操作数据库,视图不写业务逻辑,模型不负责渲染——分工清晰,扩展性强。不需要魔改框架就能支持多模块、API 与页面共存、模板引擎切换(如 Twig、 Plates)等常见需求。