使用thinkphp5很长一段时间了,感觉thinkphp5的orm封装得还不错,
在使用中也是非常的方便,可以说orm给我们写模型层提供很大的便利性,
也就是直接提高了我们的开发效率和代码的可维护性。正是因为我们使用
起来方便,正因为他的强大,而导致我们忽略了对底层实现,对面向对象
理解得不够深刻,因此在一段时间里我便深入的看了下thinkphp5的orm,
因此抽时间来总结下所得。
如果你对以下疑问都了解,我觉得可以忽略了!总的来说只有一个大的问题,thinkphp orm是如何运行的?model层的执行过程是怎样的?下面我们把这个大的问题拆解成下面一些小的问题如下:thinkphp orm是如何实现支持多种类型数据库?
thinkphp model层是如何支持本类和静态调用的?
明明继承的model与Query无关联是如何调用到query()的where和find()方法的?
thinkphp model层是如何连接数据库的?
下面我们来看下这些问题是怎样实现的?首先我们看下tp的orm目录结构
可以看到thinkphp orm 支持 mysql、pgsql、sqlite、sqlserver.thinkphp orm是如何实现支持多种类型数据库?