小凡 发表于 2011-8-8 01:33:51

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

看了下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); 实例化了这个类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

jeongee 发表于 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 static/image/common/back.gif
这个不是STBLOG有的,这个是CI的数据库文件,你可以从drivers这个文件夹的名字可以看出,这个类似与适配器 ...

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

jeongee 发表于 2011-8-8 09:21:40

小凡 发表于 2011-8-8 09:16 static/image/common/back.gif
嗯 谢啦 我是结合手册跟这个程序一起看的   还有个问题想问你啊有可能问的有点早因为所有的程序还没 ...

CI手册有执行流程图
页: [1]
查看完整版本: 看了STBlog的数据库文件夹下的文件,感觉自己没有完全明白