MVC模式
模型-视图-控制器(MVC)是一种软件架构模式(设计模式)
MVC把软件系统分为三个基本部分:模型(model),view(视图)和控制器(controller)
MVC的目标是将业务逻辑从用户界面的考虑中分离。
这样,开发者就可以更容易地改变每一部分而不会影响其他。
典型的Web MVC流程
- Controller截获用户发出的请求;
- Controller调用Model完成状态的读写操作;
- Controller把数据传递给View;
- View渲染最终结果并呈现给用户。
模型Model - 管理大部分的业务逻辑和所有的数据库逻辑
- 数据、行为、方法是Model的主要内容。
- 实际工作中,Model是MVC中代码量最大。
- 注意将Model与Controller区分开,
- Model是处理业务方面的逻辑,Controller只是简单的协调Model和 View之间的关系。
- 只要是与业务有关的,就该放在Model里面。
- 数据校验,public常量和变量,都应该放在Model层。
- 好的设计应该是胖Model,瘦Controller。
视图View - 负责渲染数据,通过HTML方式呈现给用户
- View就是负责显示。
- 一切与显示界面无关的东西,都不应该出现再view里面。
- View中一般不应该出现复杂的判断语句,以及复杂的运算过程 。
- 对于PHP的 Web应用而言,HTML是View中的主要内容
- View应该从不调用Model的写方法。View只从Model中读取数据,但不改写Model。
- View一般没有任何准备数据处理的内容,如查询数据库等。
- 视图里面要用到的数据,就是一个变量。
控制器Controller - 负责响应用户请求、管理模型的视图中的通信
- 对于Controller,主要是响应用户请求,决定使用什么视图,需要准备什么数据用来显示。
- 对于request的访问代码,应该放在Controller里面,比如$ _GET、$ _POST等。
- Controller应该仅权限于获取用户请求数据,不应该对数据有任何操作活预处理,这应该放在Model里面
- 对于数据的写操作,要调用Model类的方法完成,一般不要有HTML代码等其他表现层的东西。
代码规范
- Mysql的表名需小写或小写加下划线,如:item,car_orders。
- 模块名(Model)需用帕斯卡命名法,即首字母大写,并在名称后添加Model,如:ItemModel。
- 控制器(Controller)需用帕斯卡命名法,即首字母大写,并在名称后添加Controller,如:ItemController。
- 方法名(Action)需用驼峰命名法,即首字母小写。如:index。
- 视图(View)部署结构为控制器/行为名,如:item/index.html。