用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3427|回复: 3
收起左侧

看了STBlog的数据库文件夹下的文件,感觉自己没有完全明白

[复制链接]
发表于 2011-8-8 01:33:51 | 显示全部楼层 |阅读模式
看了下STBlog的system/database文件夹下面的文件 总是感觉自己没有完全弄明白,就是感觉没有找到一条清晰的线,大家看下我说的是不是正确。
好像这个数据库的入口 是DB.php文件里面function &DB($params = '', $active_record_override = FALSE) 函数,该函数先是判断数据库的连接方式(是否为DSN字符串连接,这里还没弄明白,不知道DSN连接方式是什么东东),如果不是则引入了数据库的配置文件(application/config/database.php),然后引入database/DB_driver.php(CI_DB_driver类)文件,接下来又根据变量$active_record决定是否载入database/DB_active_rec.php(Active Record 类)文件,并决定 CI_DB类 是继承具体哪个类CI_DB_active_record { } or CI_DB_driver { } ,然后接着又引入drivers/mysql/mysql_driver.php(CI_DB_mysql_driver类)文件,以上这些类只是引入进来 并没有对类进行实例化操作,接下来 $DB =& instantiate_class(new $db[default]); 实例化了这个类CI_DB_mysql_driver。在以上的引入的文件中存在如下关系:CI_DB_mysql_driver 继承 CI_DB 类, CI_DB 又继承 CI_DB_active_record 类,CI_DB_active_record 又继承 CI_DB_driver类。然后数据库对象调用自动初始化数据库函数$DB->initialize();,该函数完成了 连接数据库,选择数据库,和设置数据库字符集的操作,在设置字符集的时候调用函数db_set_charset(该函数在DB_driver.php中存在,在mysql_driver.php中又重写了这个函数)。最后返回数据库对象 $DB.至此数据库方面的连接等是否已经完成了呢 就是在以后的程序里面是不是就直接用 $DB->函数名(参数)就是能对数据库进行所有的操作了呢  但是这个database文件夹下还有好几个文件没有涉及到呢。我看完后自己能够整理出来的就是这些 总是感觉有些不清晰 当然看完每个文件里面的函数具体怎么执行还是有很大帮助的  希望大家给指点下 3Q
发表于 2011-8-8 08:51:02 | 显示全部楼层
本帖最后由 jeongee 于 2011-8-8 08:54 编辑

这个不是STBLOG有的,这个是CI的数据库文件,你可以从drivers这个文件夹的名字可以看出,这个类似与适配器的设计,不管是什么数据库,CI都想统一他们的使用方式。至于你用不到的一些文件,那些是关于数据库啊,表结构的一些操作,具体的你看看手册。
PS:想学习STBLOG,必先学习CODEIGNITER
 楼主| 发表于 2011-8-8 09:16:31 | 显示全部楼层
jeongee 发表于 2011-8-8 08:51
这个不是STBLOG有的,这个是CI的数据库文件,你可以从drivers这个文件夹的名字可以看出,这个类似与适配器 ...

嗯 谢啦 我是结合手册跟这个程序一起看的   还有个问题想问你啊  有可能问的有点早  因为所有的程序还没看完 就是我在看程序的时候  基本上所有的函数也都能看懂什么意思  具体每行代码什么意思也能明白  但是我就是从整体上 全局上 整理不清楚 , 就是关于CI具体的执行流程不清晰,比如说 一个数据提交后 CI 具体怎么处理这个数据的流程不是很清晰  具体从那个函数开始处理  最后交给哪个函数  最后在输出给页面  这样的没有搞清楚  也许是因为我还没看完吧  或是我看到少  要看上两遍 三遍 或是更多才能慢慢整理清晰
发表于 2011-8-8 09:21:40 | 显示全部楼层
小凡 发表于 2011-8-8 09:16
嗯 谢啦 我是结合手册跟这个程序一起看的   还有个问题想问你啊  有可能问的有点早  因为所有的程序还没 ...

CI手册有执行流程图

本版积分规则