php_mvc实现步骤三,四
3、match_mvc
MVC
以ecshop的前台为例:
功能一:
首页
购物车数据,商品分类数据,其他的首页需要的数据
功能二:
拍卖活动
购物车数据,商品分类数据,拍卖相关数据
功能三:
团购商品
购物车数据,商品分类数据,团购相关数据
可见,应该数据的处理分离出来,在需要的功能中调用即可!
M:模型 用来操作表的
V : 模版 用来显示页面
C:控制器 调度 操作那个表产生数据 调用哪个模版显示数据
此时,采用三层分离(MVC)的方式来实现比赛列表:

C:功能调度:

M,数据处理

V,结果展示

注意:浏览器需要请求C来获得需要的内容!
以上的划分方式,称之为MVC,项目架构思想!
其中:
M:Model,模型,项目中数据处理(业务逻辑处理)单元。
V:view,视图,项目中结果展示的单元(模板文件)。
C:Controller,控制器,项目中负责某个功能整体流程调度单元。
强调:MVC项目架构思想(项目中代码间的组织关系),不决定语法形式(OOP,面向过程),仅仅决定项目代码分工方式!
特点如下:
浏览器仅仅C控制器交互。
模型M和视图V都被控制器C所调用。
模型M和视图V之间,不存在任何的交互。
辨析:
MVC pk MVC框架?
MVC:架构思想
MVC框架:基于MVC思想架构的一个框架(基础代码的集合)
4、match_model
模型层典型实现
典型的MVC框架中,模型层代码组织结构是什么样的!、
模型类
每张表,对应一个操作模型,当前表中的所有操作,都是用该模型完成!
[模型类]每张表的操作模型,由某个模型类实例化而来的对象【语法】。
每个表操作,对应模型对象的一个方法。
模型类的示例代码:


同时修改控制器中,使用模型的方法:
C:

Tip:模型,在项目中,通常指的是模型类的对象,而不是模型类本身。
基础模型类
显而易见,在模型中,可能会出现重用的代码,例如(得到DAO对象过程),而且是每个模型对象的每个方法中都需要!

被其他的具体模型类所继承:
MatchModel

基础模型类中增加,初始化数据库操作对象的功能:
Model.class.php

将实例化好的MYSQLDB类的对象,存储到模型对象的属性上,从而保证,模型类的每个方法中都可以使用该属性。
模型方法中的使用:
MatchModel->getList();

何时调用该初始化DAO的方法?
在实例化模型类对象时,就需要操作数据库,就需要执行初始化DAO的方法。
可见在构造方法中被调用即可:
Model.class.php

此时的模型结构关系:

模型的单例
如果在一个功能(控制器)中,如果使用某个表的多次操作,应该使用该表的一个模型就可以完成全部任务。
如何保证模型的单例?
典型的,可以通过一个单例工厂来实现(为什么不三私一公?是多个(所有的模型类)都需要单例效果)
工厂类:
直接new,不能实现需要的业务逻辑,需要辅助一段代码逻辑代码,才能确定如何去实例化对象,此时需要工厂类。
模型对象的单例效果:
不能在需要模型时直接就实例化,因为不能实现单例效果,需要一段逻辑代码,来判断当前模型类是否已经实例化过,如果实例化过,则直接返回实例化过的对象,否则实例化新的。
代码实现:
增加工厂类:
Factory.class.php

控制器中,为了得到单例对象,则需要通过工厂类的M方法完成:

模型的流程

php_mvc实现步骤三,四的更多相关文章
- 微信小程序从零开始开发步骤(四)自定义分享的功能
上一章节,实现了小程序的底部导航的功能,这一节开始实现一些简单的功能.本章节介绍的是小程序的自定义分享的功能. 可以分享小程序的任何一个页面给好友或群聊.注意是分享给好友或群聊,并没有分享到朋友圈.一 ...
- RobHess的SIFT代码解析步骤三
平台:win10 x64 +VS 2015专业版 +opencv-2.4.11 + gtk_-bundle_2.24.10_win32 主要参考:1.代码:RobHess的SIFT源码 2.书:王永明 ...
- php_mvc实现步骤九(登录验证码,退出-登录标记)
shop34-17-登录验证码 验证码的分析 登录:防止暴力破解 论坛:防止灌水水 展示类:被抓取. 需要技术: 图片处理技术. 会话session技术. PHP图片处理技术 – GD 具体操作步骤 ...
- [Effective Java 读书笔记] 第二章 创建和销毁对象 第三 四条
第三条 用私有构造器或者枚举类型强化singleton属性 singleton指只能被实例化一次的类,即将构造器设置为私有,使用公有静态成员来实例化,且只实例化一次对象 第四条 通过私有构造器强化不可 ...
- 微信小程序从零开始开发步骤(四)
上一章节,实现了小程序的底部导航的功能,这一节开始实现一些简单的功能.本章节介绍的是小程序的自定义分享的功能. 可以分享小程序的任何一个页面给好友或群聊.注意是分享给好友或群聊,并没有分享到朋友圈.一 ...
- php_mvc实现步骤六
shop34-1-目录布局 存在项目的根目录 shop34 框架代码与应用程序代码划分 框架代码: 在各个应用程序间可以通用的代码. 应用程序代码: 当前项目的业务逻辑实现的代码. 分别创建两个子目录 ...
- 安装ceph (快速) 步骤三: Ceph 客户端
大多数 Ceph 用户不会直接往 Ceph 存储集群里存储对象,他们通常会使用 Ceph 块设备. Ceph 文件系统.或 Ceph 对象存储这三大功能中的一个或多个. 前提条件 先完成存储集群快速入 ...
- php_mvc实现步骤十
shop34-19-商品添加 功能:添加商品表单 Index.php?p=back&c=Goods&a=add Controller-Action: 新建商品控制器类 Applicat ...
- php_mvc实现步骤八
shop34-10-框架类 框架类(框架初始化类) 将原来入口文件中功能,放在该类中完成,入口文件变得简单,轻量! 将入口文件中的各个功能,由框架类的各个方法,完成: 为了简单化,使用纯静态的类.(看 ...
随机推荐
- test20190901 NOI2019 模拟赛
0+0+0=0.还是太菜,看不出题型. Masodik 你要从 (0,0) 点走到 (n,m),每次只能往 x 轴或者 y 轴正方向移动一个单位距离.从 (i,j) 移动到 (i,j+1) 的代价为 ...
- pyinstaller打包多个py文件和去除cmd黑框
1.打包多个py文件并且去除cmd黑框 格式:pyinstaller.exe -F 路径\文件名.py空格路径\文件名.py空格--noconsole pyinstaller.exe -F ui.py ...
- Java 内部类和Lambda
Java内部类 内部类又称为嵌套类,是在类中定义另外一个类.内部类可以处于方法内/外,内部类的成员变量/方法名可以和外部类的相同.内部类编译后会成为完全不同的两个类,分别为outer.class和ou ...
- 小a的学期 (组合数取模模板)
题目描述 小a是一个健忘的人,由于他经常忘记做作业,因此老师对他很恼火. 小a马上就要开学了,他学期一共2n 天,对于第i天,他有可能写了作业,也可能没写作业,不过他自己心里还有点B数,因此他会写恰好 ...
- vant - Navbar slot 插槽使用
//子组件 <template> <van-nav-bar> <slot slot="left" name="left">& ...
- 2019.12.11 java练习
class Demo01 { public static void main(String[] args) { //数组求最大值 int[] arr={1,2,3,4,5,6,7,8,9}; int ...
- Redis的订阅、事务、持久化
1.Redius的订阅: 运用关键字subscribe订阅: 关键字publish发布: 发布后,订阅的页面才会出现发布的内容. 2.Redis事务: Redis事务与mysql的事务不同,mysql ...
- CURL shell 使用
#! /bin/bash requrl="http://www.baidu.com/xxxxxx" while true do html=$(curl -s "$requ ...
- windows环境搭建dubbo服务
windows环境搭建dubbo服务 1:首先需要下载dubbo的注册中心 zookeeper zookeeper注册中心下载地址链接:http://mirror.bit.edu.cn/apache/ ...
- windows 共享网络
windows 共享网络 今天单位的网络突然断了,光猫LOS亮红灯,宽带报修.等了半天还没来,下面科室要上报资料,急着用网, 通过windows的共享网络+无线网卡暂时用我的手机流量. 找了一台电脑插 ...