thinkphp是怎么链接数据库的,文档上面显示操作表都是M()函数,之后进行连贯操作,
怪我咯
怪我咯 2017-04-10 17:32:56
[PHP讨论组]

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(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服务器写好密码之类的,然后用时候就自动加载配置了啊

大家讲道理

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号