php Zend中搭建MVC

1次阅读

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

php Zend中搭建MVC

在 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免费学习笔记(深入)”;

php Zend中搭建MVC

rpcms轻量开源内容管理系统3.3.3

RPCMS是一款基于PHP+MYSQL的轻量型内容管理/博客系统,支持PHP5.6版本以上,支持win/Linux系统。它自主研发的RP框架(OPP方式),采用MVC架构搭建的高效、稳定的内容管理系统。灵活小巧,但有着强大的扩展性、丰富的插件接口和大量的模板。统一采用模板标签,轻松上手,让开发更方便!智能缓存机制让网站运行方面大幅度提高。系统特点:源码简洁、体积轻巧、功能丰富、安全、灵活等特点,完

php Zend中搭建MVC 1

查看详情 php Zend中搭建MVC

  • 执行 ./vendor/bin/laminas-module-create Blog(需安装 laminas/laminas-modulemanager 和 CLI 工具
  • 模块自动生成在 module/Blog/ 下,含 src/Controller/config/module.config.phpview/
  • config/modules.config.php 中添加 'Blog' 到模块列表
  • module/Blog/config/module.config.php 中配置路由,例如匹配 /blogIndexController::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)等常见需求。

text=ZqhQzanResources