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-框架类 框架类(框架初始化类) 将原来入口文件中功能,放在该类中完成,入口文件变得简单,轻量! 将入口文件中的各个功能,由框架类的各个方法,完成: 为了简单化,使用纯静态的类.(看 ...
随机推荐
- dimensionality reduction动机---data compression(使算法提速)
data compression可以使数据占用更少的空间,并且能使算法提速 什么是dimensionality reduction(维数约简) 例1:比如说我们有一些数据,它有很多很多的feat ...
- Linux Shell 常用命令与目录分区的学习总结
很早就想根据自己的学习规律和遗忘规律,自己总结一下Linux/Unix系统的Shell命令,一来便于自己时常查询之用,二来也分享于各位博友 Linux shell是系统的用户界面,即命令行.它提供了用 ...
- LeetCode 1105. Filling Bookcase Shelves
原题链接在这里:https://leetcode.com/problems/filling-bookcase-shelves/ 题目: We have a sequence of books: the ...
- centos7最小化安装无法tab补全
yum install -y bash-completion 安装完后reboot重启生效
- 用OKR提升员工的执行力
很多管理者在公司管控的过程中常常出现一种乏力的感觉,觉得很多事情推进不下去,结果总是令人不满意.管理者总是会吐槽,“员工执行力差!”而此时大部分管理者会认为公司执行力差是员工能力和态度的问题. 事实上 ...
- vault 使用 中间ca 进行证书管理
使用vault 进行pki 管理是很方便的,以前测试的都是由根证书进行证书签发,这次使用中间ca 进行签发 所以会有一个证书连 测试使用docker-compose 运行 环境准备 docker-co ...
- 一些常用的文本文件格式(TXT,JSON,CSV)以及如何从这些文件中读取和写入数据
TXT文件: txt是微软在操作系统上附带的一种文本格式,文件以.txt为后缀. 从txt文件中读取数据: with open ('xxx.txt') as file: data=file.readl ...
- hexo绑定个人域名
前段时间用 hexo 搭建的 gitpage 个人博客,服务器用的是 github 的,然后域名默认也是 github 下的二级域名:username.github.io, 现在为了提升格调准备将自己 ...
- CTF CMS(转)
CTF--CMS漏洞总结 海洋CMS 6.28 海洋CMS6.28命令执行漏洞 6.45-6.54 漏洞预警 | 海洋CMS(SEACMS)0day漏洞预警 8.8(未验证) 海洋cms前台到后台的g ...
- hadoop平台上HDFS和MAPREDUCE的功能、工作原理和工作过程
作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapReduce ...