MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
PHP中MVC模式也称Web MVC,从上世纪70年代进化而来。MVC的目的是实现一种动态的程序设计,便于后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。
MVC各部分的职能:
模型Model – 管理大部分的业务逻辑和所有的数据库逻辑。模型提供了连接和操作数据库的抽象层。
- 包含属性用于描述特定的数据
- 应该包含业务逻辑,以确保数据能够满足表现的需要
- 应该包含数据操作的逻辑,如数据的增删改等
- 不应使用$_GET $POST这样的数据,是基于model的功能和重用的考虑
- 不应出现Html代码,不属于model层的范畴
控制器Controller - 负责响应用户请求、准备数据,以及决定如何展示数据。
- 包含Html,以及所有负责表现的代码,可以出现php,但只是用于遍历数据
- 不应该包含Db请求,数据库的操作
- 不应该出现引用$_GET $_POST这类数组的代码,View只专注于表现
- 如果必要,可以访问Model和Controller的属性,不过仅为了满足表现的需要
视图View – 负责渲染数据,通过HTML方式呈现给用户。
- 可以访问$_GET $_POST 这样的用户请求数组
- 创建模型,并决定一个模型对象的生命周期
- 不应该出现SQL语句,数据库请求应该放到Model中
- 不应该出现Html代码,应该将其放入View中
一个典型的Web MVC流程:
- Controller截获用户发出的请求;
- Controller调用Model完成状态的读写操作;
- Controller把数据传递给View;
- View渲染最终结果并呈献给用户。
MVC的三层从大体看是很独立的,而且每个模块负责的工作也和明确,控制器负责处理用户的请求,逻辑处理包括数据模型的调用以及对表现层的输出控制;模型主要负责数据关系,处理和业务逻辑操作;表现层主要负责前端页面的内容表示,可适当包含一些控制表现的逻辑;