thinkphp是怎么链接数据库的,文档上面显示操作表都是M()函数,之后进行连贯操作,

我的数据库类型是mysql类,我看源码后发现最终调用的是thinkphp核心目录下的DB/Driver,中的mysql类的构造函数,这个构造函数只是读取了配置文件,并没有链接数据库,我想知道它是在哪里链接的数据库

阅读 2.6k
3 个回答

并不清楚你说的是哪个版本,暂且当成3.2版本。
首先,如果你还没有比较熟悉面向对象,先把OOP过一遍再看框架的东西
如果已经熟悉了OOP,再弄清楚PDO
最后要弄清楚M方法到数据库的调用栈
你说 “最终调用的是thinkphp核心目录下的DB/Driver”,可以说对,也可以说不对。因为实际上Driver是作为一个具体数据库驱动的基类。
调用栈
1、调用M方法,实际上是实例化一个Model对象
2、一个Model对象至少有一个数据库链接句柄,这时候通过Db数据库中间层获取到一个具体的数据库驱动实例。这是一个什么数据库取决于配置(假设是mysql)。中间层的设计就是你不需要管底层是什么样的数据库,直接获取就行了。
(到这里为止我知道你都是清楚的,但是其实这里并没有实际连接数据库)
3、这个时候再返回Model类中,所有的涉及到的数据库操作CURD,基本上都是通过$this->db来完成的。$this->db就是2中获取到的实例。
4、这个时候到Driver/Mysql.class.php,和Driver.class.php中看一下。在调用相应的方法的时候,都有调用同一个方法initConnect, 这里开始才是真正的连接数据库。

这是我学习TP时自己的理解。如果有说错的望指点。大家一起交流。
希望对你有帮助!

读取config文件里面的参数啊,你自己用那台mysql服务器写好密码之类的,然后用时候就自动加载配置了啊

这么简单的问题 直接看官方文档啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题