PHP笔记之MVC(1)

目录

mvc思想原理

mvc思想简单演示

MVC框架思想原理图

mvc思想演示典型案例

模型层(Model)的典型实现

模型层的主要作用:

模型层的典型代码模式

控制器中调用模型层获取数据的典型做法

基础模型类

实现模型类的单例——单例工厂

整个模型层的类库结构图

控制器的典型实现

控制器的作用

控制器类的常规做法

其功能:

控制器的划分

控制器中的“动作”:

基础控制器类

视图层的典型做法


mvc思想原理

mvc思想简单演示

需求:

     在一个网页上,根据用户的请求(选择),来显示不同的时间效果:

          效果1:只显示年月日

          效果2:只显示时分秒

         效果3(默认效果)显示年月日时分秒;

PHP笔记之MVC(1)

他们之间的关系大致如下:

MVC框架思想原理图

PHP笔记之MVC(1)

PHP笔记之MVC(1)

有一个现实生产的类比原理图,可做参考:

PHP笔记之MVC(1)类比:PHP笔记之MVC(1)

mvc思想演示典型案例

目标:

PHP笔记之MVC(1)

(删除功能先不做)

模型文件(UserModel.class.php):

PHP笔记之MVC(1)

控制器文件(ShowAllUser.php):

PHP笔记之MVC(1)

视图文件:

PHP笔记之MVC(1)

模型层(Model)的典型实现

模型层的主要作用:

用于处理数据的存取操作,比如表的增删改查

通常都是根据“控制器的要求”,以返回合适的数据;

有时候,控制器还需要“传递过来”相应的数据,才能获取对应的结果数据;比如:

      获取id为5的用户的信息,此时控制器就需要传递过来“5”这个数据;

模型层的典型代码模式

PHP笔记之MVC(1)

示例代码:

PHP笔记之MVC(1)

控制器中调用模型层获取数据的典型做法

require  ‘模型层类文件’;

$obj  =  new  模型对象();

$data  =  $obj->某个方法();

 

基础模型类

PHP笔记之MVC(1)

实现模型类的单例——单例工厂

PHP笔记之MVC(1)

PHP笔记之MVC(1)

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

PHP笔记之MVC(1)

PHP笔记之MVC(1)

整个模型层的类库结构图

dao:  Data  Access  Object(数据访问对象);

PHP笔记之MVC(1)

控制器的典型实现

控制器的作用

PHP笔记之MVC(1)

数组函数in_array()的用法:

PHP笔记之MVC(1)

控制器类的常规做法

先观察目前写完的2个控制器:

PHP笔记之MVC(1)

自然,还可以按此模式,写更多的控制器。

但基本模式都一样:

其功能:

PHP笔记之MVC(1)

控制器的划分

通常,一个项目中,会有很多很多的功能,我们通常会将一些“相关功能”,合在一起,称为“一个模块”,并使用一个控制器去“表达”这个模块中的各个功能——其实就是方法。
图示如下:

PHP笔记之MVC(1)

控制器中的“动作”:

一个控制器,就是一个类;

一个控制器中,就只包含了一些方法!!!

那么, 这些方法,被称为“动作”——因为每个方法,一定就对应了网页界面上用户所在的某个“操作”(动作,请求);

习惯上,所有的动作(方法),都以“Action”这个词为结尾。

这些动作(方法名),将会对应网页上的连接(或跳转或提交)动作中的“act”参数的值!

类似这样:

PHP笔记之MVC(1)

对应(userController中):

PHP笔记之MVC(1)

又来:

PHP笔记之MVC(1)

对应(userController中):

PHP笔记之MVC(1)

实际应用中,在网页的连接(或跳转或提交)的时候,act=XXX会写成:

a=XXX

如下:

PHP笔记之MVC(1)

则在控制器中获取数据时:

PHP笔记之MVC(1)

基础控制器类

PHP笔记之MVC(1)

PHP笔记之MVC(1)

使用:

PHP笔记之MVC(1)

。。。。。

视图层的典型做法

PHP笔记之MVC(1)