PHP笔记之MVC(1)
目录
mvc思想原理
mvc思想简单演示
需求:
在一个网页上,根据用户的请求(选择),来显示不同的时间效果:
效果1:只显示年月日
效果2:只显示时分秒
效果3(默认效果)显示年月日时分秒;
他们之间的关系大致如下:
MVC框架思想原理图
有一个现实生产的类比原理图,可做参考:
类比:
mvc思想演示典型案例
目标:
(删除功能先不做)
模型文件(UserModel.class.php):
控制器文件(ShowAllUser.php):
视图文件:
模型层(Model)的典型实现
模型层的主要作用:
用于处理数据的存取操作,比如表的增删改查;
通常都是根据“控制器的要求”,以返回合适的数据;
有时候,控制器还需要“传递过来”相应的数据,才能获取对应的结果数据;比如:
获取id为5的用户的信息,此时控制器就需要传递过来“5”这个数据;
模型层的典型代码模式
示例代码:
控制器中调用模型层获取数据的典型做法
require ‘模型层类文件’;
$obj = new 模型对象();
$data = $obj->某个方法();
基础模型类
实现模型类的单例——单例工厂
应用(在控制器类文件中):
整个模型层的类库结构图
dao: Data Access Object(数据访问对象);
控制器的典型实现
控制器的作用
数组函数in_array()的用法:
控制器类的常规做法
先观察目前写完的2个控制器:
自然,还可以按此模式,写更多的控制器。
但基本模式都一样:
其功能:
控制器的划分
通常,一个项目中,会有很多很多的功能,我们通常会将一些“相关功能”,合在一起,称为“一个模块”,并使用一个控制器去“表达”这个模块中的各个功能——其实就是方法。
图示如下:
控制器中的“动作”:
一个控制器,就是一个类;
一个控制器中,就只包含了一些方法!!!
那么, 这些方法,被称为“动作”——因为每个方法,一定就对应了网页界面上用户所在的某个“操作”(动作,请求);
习惯上,所有的动作(方法),都以“Action”这个词为结尾。
这些动作(方法名),将会对应网页上的连接(或跳转或提交)动作中的“act”参数的值!
类似这样:
对应(userController中):
又来:
对应(userController中):
实际应用中,在网页的连接(或跳转或提交)的时候,act=XXX会写成:
a=XXX
如下:
则在控制器中获取数据时:
基础控制器类
使用:
。。。。。
视图层的典型做法