模型层的封装

模型层封装的原则

介绍:

  模型层,也就是Model这一层,用来封装对数据库操作的封装

  由于现在主流的编程思想还是OOP面向对象编程,也就是说项目的基本单位就是一个一个类文件,那么如何使用面向对象思想封装对数据库操作呢?

  一张数据表对应一个模型类,然后将数据表的增删改查操作,封装到模型类的成员方法中:

  

根据上面的指导思想,我们来创建模型类:为了方便用户通过类名标识出该类时控制器还是模型,我们每次创建类的时候,通过增加后缀来区分,例如:控制器的后面统一加上:Controller,模型类后面统一加上Model

我们以用户表为例,我们先常见用户模型类:UserModel.class.php

上面的代码还有优化余地:将来不仅在user_select方法中使用dao对象执行sql语句,在下面的这些方法中,都需要使用到dao对象,所以我们可以将初始化dao对象的代码封装到构造方法中。

基础模型类

将来我们的项目中还会有其他的数据表、模型类,例如:我们的商品模型类中也需要使用dao对象执行sql语句,所以我们又可以将多个模型类中公共的代码封装到基础模型类中,然后让这些类继承这个基础的模型类

工厂类实例化单例对象

  之前我们使用三私一公的方式实例化单例模型对象,但是我们的模型类如果使用三私一公的话,需要在每个类里面都得定义三个私有的成员和一个公共的成员才能实例化一个单例对象,这个流程比较繁琐,所以我们采用下面的工厂模式实例化单例对象:

什么是工厂模式呢?

顾名思义,就是根据传递的进来的模型类,给你生成单例对象

但是演示了一把,发现上面生成了3个对象

原因在于$model_list是一个普通的变量,每次执行完M方法,里面的变量都会被释放掉,所以下一次在调用M方法的时候,会重新判断

所以我们将$model_list定义为静态的变量,这样,当方法执行完毕会将执行的结果保存起来,直到PHP脚本执行完毕

最新文章

  1. JAVA上百实例源码以及开源项目
  2. 对C++下struct 和 类默认继承的认识
  3. SSIS 控制流和数据流(转)
  4. Android SDK Manager无法更新问题解决
  5. 20160322 javaweb 之jdbc-- mysql 批处理
  6. 使用HttpClient向服务器发送restful post请求
  7. 前端学PHP之日期与时间
  8. Python笔记·第九章—— 函数 (一)
  9. 2017-2018-1 我爱学Java 第六七周 作业
  10. ASP.Net Mvc实现自定义User Identity用户身份识别系统(2)
  11. BZOJ4503 两个串 多项式 FFT
  12. XML基础学习
  13. Vue提供操作DOM的方法
  14. 如何使用Visual Studio 2017调试.net库源代码
  15. mycat配置安装测试
  16. 测试udp服务的端口是否可用
  17. Webpack学习-Webpack初识
  18. 使用PHP做移动端 api接口开发方法(适用于TP框架)
  19. 2018.07.31 bzoj4569: [Scoi2016]萌萌哒(并查集+倍增)
  20. LZO压缩算法64位崩溃问题

热门文章

  1. String类为什么要用final修饰(面试回答)
  2. Anaconda+用conda创建python虚拟环境
  3. svn搭建服务器--- 绝对好使---杜恩德
  4. Java Web 单表操作
  5. Confluence 持续集成平台部署记录
  6. 封装一个button上带图片的,图片在上,文字在下的按钮
  7. springboot 入门四-时间类型处理
  8. IOS学习8——常用框架学习汇总
  9. HTML+DIV+CSS+JSweb前端基础
  10. bzoj 3575: [Hnoi2014]道路堵塞