三、深度解析execute的执行
案例依然是上节使用的案例
首先得明确一下execute这个方法的参数,在这个方法存在三个参数,主要说明第一和第二个参数。
参数的值咔咔已经放到了代码注释中。
然后一步一步的分析,首先执行的是$this->initConnect(true);初始化数据库连接。
在这个方法中需要知道的是,这里到底判断的是什么,其实也就是deploy这个参数是什么。
首先需要明确的是这个参数肯定是从配置文件中获取出来的,然后咱们现在在解析的是数据库,那么这个参数有很大的可能就是在数据库的配置文件。
在对代码的分析下我们在数据库的配置文件中找到了这个配置项,这个配置项是数据库的部署方式。
0 集中式(单一服务器),1 分布式(主从服务器),在本案中,或者在真实项目运行中也不会在框架中使用分布式数据库,所以就不用去了解了。
然后代码就会继续执行$this->linkID = $this->connect();,也就是注释给的提示为默认单数据库。
来到这个方法中,咔咔截图截到的地方会进行数据库连接ID 支持多个连接的判断。
然后第二个判断会直接获取参数配置信息和本类的构造函数中提前获取的到的数据库配置文件,并且最后返回给config属性。
接下来解析连接参数这块的内容,这块的内容,判断配置信息中的params索引值,这个值在配置文件是一个空数组,所以是返回true的。
第二个判断是否为数组同样也会返回true。
所以说这个判断条件成立,会执行if的判断语句。
在这里说一个小的知识点就是关于运算符与或非的知识。
与:所有的条件都为真返回true
或:只要有一个条件为真则返回true
上图中的本类属性params已经提前声明好了,这里只需要这是pdo连接mysql时需要的参数即可。
为了方便大家理解咔咔将这个参数给大家打印了出来,请看下图。
也就说关于pdo参数其实就是声明的一系列常量而已。
接下来就是重中之重了,也就是使用pdo的方式进行连接数据库,并且将连接信息返回回去,也就是返回给$this->linkID,直到这里初始化数据库连接就结束了。
然后就会使用PDo的操作实例执行execute这个方法是内置的方法,最终返回或者影响记录数。
四、总结
本节从认识模型需要的文件然后在对模型的添加行为做了深度的源码解析行为。
在解析源码的过程中有的部分没有进行完全的讲解,但是重点的部分都已经过了一遍。
最后在深度解析了execute这个方法,为什么要解析这个方法,因为这个方法是所有操作执行的最后一步。