Skip to content

1. 在 Web/PHP 应用程序中使用 MVC 架构

该文档的PDF版本可在此处获取 |HERE|。

该文档的源代码可在此处获取 |HERE|。

MVC(模型-视图-控制器)模式旨在明确划分展示层、处理层和数据访问层。遵循此模式的 Web 应用程序将采用以下结构:

这种架构通常被称为三层架构:

  • 用户界面是视图(V)
  • 应用程序逻辑是控制器(C)
  • 数据源是模型(M)

用户界面通常是网页浏览器,但也可能是通过网络向 Web 服务发送 HTTP 请求并格式化接收结果的独立应用程序。应用逻辑由处理用户请求的脚本组成。 数据源通常是数据库,但也可能是简单的平面文件、LDAP目录、远程Web服务等。保持这三个实体之间高度的独立性符合开发者的最佳利益,这样如果其中一个发生变化,另外两个就不必改变,或者只需进行最小的调整。

MVC 架构非常适合使用面向对象语言编写的 Web 应用程序。PHP 语言(4.x 版本)并非面向对象的。尽管如此,开发者仍可通过精心设计代码结构和应用程序架构,使其更紧密地契合 MVC 模型:

  • 我们将把应用程序的业务逻辑放置在与负责管理请求-响应交互的模块分开的模块中。MVC 架构如下所示:

在 [应用逻辑] 块中,我们可以区分:

  • 主程序或控制器,它作为应用程序的入口点。
  • [操作] 模块,即负责执行用户请求的操作的一组脚本。
  • [业务类] 模块,该模块汇集了应用程序逻辑所需的 PHP 模块。这些模块与客户端相互独立。例如,根据作为参数提供的特定信息计算税款的函数,无需关心该信息是如何获取的。
  • [数据访问类] 模块,包含用于检索控制器所需数据的 PHP 模块,通常是持久化数据(数据库、文件等)
  • 视图生成器,负责将视图作为响应发送给客户端。

在最简单的情况下,应用程序逻辑通常可简化为两个模块:

  • [控制]模块,负责处理客户端与服务端之间的通信:处理请求,生成各种响应
  • [业务逻辑] 模块,该模块从 [控制器] 模块接收待处理的数据,并向其返回处理结果。此 [业务逻辑] 模块随后自行管理对持久化数据的访问。