TP5中Db类与Model类关系
来源:互联网 发布:免费录音机软件下载 编辑:程序博客网 时间:2024/05/16 07:32
在以 ThinkPHP 作为后台框架时,经常使用 Db 类操作和 Model 类继承,感觉两者密切相关,毕竟都是操作数据库,难道还能写两套代码?
那它们之间是什么关系呢? 花了些时间阅读了源码,整理了一张结构图,以备遗忘。
上图中,Query 查询对象地位特别重要,条条细线通Query,哈哈。
Query 具备数据库操作的所有接口,是对 Connection 类的进一步封装和扩展,Query 支持链式操作,作为数据库中间传递对象,Db 和 Model 调用 Query 时,是通过 __call() 或者 __callStatic()
语法糖来自动触发调用的。
Query 从设计上来说,是遵从面向对象设计原则之一的里氏替换原则,除了输出的实体数据 Connection 外,其他的外部依赖都是依赖抽象类,这种通过继承的多态性可大大提高程序的可扩展性。
Query 在依赖外部类时,一般通过组合或直接调用来来建立依赖,而不是通过继承(也无法多重继承),可提高程序的灵活性,降低程序的臃肿度。
可以看到 Db 类是数据库操作的入口类,我们几乎没有直接操作过 Query 类。Db 类应用了对象关系映射(ORM)的设计方法,可以很方便的使用提供的接口,某种程度上因解析原因会稍微降低一些性能,不过你也可以用最原始的语句查询,并没有强制。
因为 Model 是一个抽象类,所以在使用时需要先继承一下。支持关系操作(Relation)。
-end-
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)发表日期:2017年6月5日
阅读全文
0 0
- TP5中Db类与Model类关系
- tp5中db::table和db::name的区别
- TP5-类中方法的继承
- 关于tp5中model层和controller层应用问题
- tp5 model 使用
- TP5 Model 功能总结
- 具体的数据库操作类,Model类和DB类
- tp5 引入自定义类
- TP5分页类
- tp5的redis类
- CodeIgniter 2.1.4 model 得不到数据库数据 model db 类无 result_array()方法
- 字典与Model类
- Model类与ImageDownLoader
- TP5中Request类可以获得哪些常量信息
- tp5中调用一些类的静态方法前面加\
- TP5控制器中引入类文件的问题
- Model基类与字典中嵌套数组时Model的处理方法
- NOSQL(redis)与关系型DB区别
- secureCRT常用的logcat指令
- C++学习笔记
- 数据库断线重连
- java类常用的一些方法
- OpenGL——VAO,VBO,EBO等对象的使用
- TP5中Db类与Model类关系
- Android 高级控件
- Bzoj3484 [Baltic2012]brackets
- 微信小程序例子——获取手机屏幕亮度
- PHP实现Collection数据集类及其原理
- Spring 事务管理(基于xml方式和注解方式)
- Java类的属性与方法要点
- qsort()排序
- caffe学习笔记2:数据层及其参数