MVC模式讲解
项目开发常见流程介绍
1需求调研:
人员:项目经理(负责人)
成果:需求说明书;
2软件设计书:
人员:项目经理(负责人)
成果:详细设计说明书——通常这就是开发过程中的主要参考技术文档。
3界面设计:
人员:界面工程师(ps,fw,....)
成果:设计效果图;
4静态网页制作:
人员:前端工程师(html,css,js)
成果:静态网页;
5动态网页开发:
人员:程序员(软件工程师)
成果:基本可用的软件初级产品;
6测试:
人员:测试工程师;
成果:可用的符合需求的产品;
7上线运营:
人员:运维工程师;
成果:发现问题,提出新需求,提出改进建议。。。。
显示与逻辑相分离思想
提出需求:
在页面上,显示“当前时间”。
原始做法:显示与逻辑混合
(文件名为一个:2show_time.php)

显示与逻辑相分离做法:
(文件:2show_time.php):


模板技术
需求:
显示当前时间,并可以由用户来选择使用不同的风格进行显示;
基本做法:
获取数据的逻辑基本保持不变!
而:
表现数据的文件,可以有多个!
我们只要在php文件中,根据用户的“选择”(请求),以决定使用(载入)哪个模板文件;
逻辑文件(php)为:


模板文件(html)为:

mvc思想原理
mvc思想简单演示
需求:
在一个网页上,根据用户的请求(选择),来显示不同的时间效果:
效果1:只显示年月日
效果2:只显示时分秒
效果3(默认效果)显示年月日时分秒;

他们之间的关系大致如下:
MVC框架思想原理图

控制器:
Controller,是一个php文件,由浏览器直接请求(访问);
它需要做2件最核心的工作:
1,(根据请求),决定需要什么数据,并去调用模型文件(类),去获取该数据;
2,(根据请求),决定需要将数据显示在哪个视图文件中。
模型:
Model,是一个php文件,不能直接请求,只能“被载入”而发挥作用。
它的核心工作只有一个:
(根据控制器的要求)去生产数据;
视图:
View,是一个“伪html文件”(因为其中有极简单的php代码),它也不应由浏览器直接请求;
它的作用是:
结合html和css代码,显示相应的变量(数据)
有一个现实生产的类比原理图,可做参考:

类比:

mvc思想演示典型案例
目标:

(删除功能先不做)
模型文件(UserModel.class.php):

控制器文件(ShowAllUser.php):

视图文件:

模型层(Model)的典型实现
模型层的主要作用:
用于处理数据的存取操作,比如表的增删改查;
通常都是根据“控制器的要求”,以返回合适的数据;
有时候,控制器还需要“传递过来”相应的数据,才能获取对应的结果数据;比如:
获取id为5的用户的信息,此时控制器就需要传递过来“5”这个数据;
模型层的典型代码模式
class 模型类名{
function 方法1(){。。。}
function 方法2(){。。。}
function 方法3(){。。。}
。。。。。。。
}
说明:
1,每个方法,都是为了获取“某种数据”;
2,有的方法,可能需要一些参数(形参);
3,这些方法,通常都需要跟数据库打交道,则就都需要“mysqldb”工具类及相关的数据库连接数据;
示例代码:

控制器中调用模型层获取数据的典型做法
require ‘模型层类文件’;
$obj = new 模型对象();
$data = $obj->某个方法();
基础模型类

实现模型类的单例——单例工厂
目标:
模型类本身不变——不保证其本身是单例的;
但:
通过,该“单例工厂”去获得模型类的实例,就是单例的。
我们要的是,设计出这样一个“单例工厂类”;
通过该单例工厂类,去“获取”模型类的对象(实例);

应用(在控制器类文件中):


整个模型层的类库结构图
dao: Data Access Object(数据访问对象);

浙公网安备 33010602011771号