您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页CodeIgniter底层数据库类继承关系

CodeIgniter底层数据库类继承关系

来源:保捱科技网


1、CI_DB_mysql_driver 继承CI_DB, CI_DB这个类是不存在的,每次调用文件中~/CodeIgniter_2.1.3/system/database/DB.php函数DB来初始化database的时候, 根据用户是否开启active_record,生成继承CI_DB_active_record或CI_DB_driver类的CI_DB类, 2、CI_DB_a

1、CI_DB_mysql_driver 继承 CI_DB, CI_DB这个类是不存在的,每次调用文件中~/CodeIgniter_2.1.3/system/database/DB.php函数&DB来初始化database的时候,

根据用户是否开启active_record,生成继承CI_DB_active_record或CI_DB_driver类的CI_DB类,

2、CI_DB_active_record类继承CI_DB_driver类

 require_once(BASEPATH.'database/DB_driver.php');

 if ( ! isset($active_record) OR $active_record == TRUE)
 {
 require_once(BASEPATH.'database/DB_active_rec.php');

 if ( ! class_exists('CI_DB'))
 {
 eval('class CI_DB extends CI_DB_active_record { }');
 }
 }
 else
 {
 if ( ! class_exists('CI_DB'))
 {
 eval('class CI_DB extends CI_DB_driver { }');
 }
 }

3、最终会调用顶级父类CI_DB_driver的构造方法,将数据库配置的各字段赋值到CI_DB_driver类的各个字段上,

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = ''; 
$db['default']['password'] = ''; 
$db['default']['database'] = ''; 
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = ''; 
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = ''; 
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = ''; 
$db['default']['autoinit'] = TRUE;


 var $username;
 var $password;
 var $hostname;
 var $database;
 var $dbdriver = 'mysql';
 var $dbprefix = '';
 var $char_set = 'utf8';
 var $dbcollat = 'utf8_general_ci';
 var $autoinit = TRUE;
 var $port = '';
 var $pconnect = FALSE;
 var $db_debug = FALSE; 

如果autoinit自动初始化为TRUE,则将DB初始化,这个DB对象是CI_DB_mysql_driver类

 require_once(BASEPATH.'database/DB_driver.php');

 if ( ! isset($active_record) OR $active_record == TRUE)
 {
 require_once(BASEPATH.'database/DB_active_rec.php');

 if ( ! class_exists('CI_DB'))
 {
 eval('class CI_DB extends CI_DB_active_record { }');
 }
 }
 else
 {
 if ( ! class_exists('CI_DB'))
 {
 eval('class CI_DB extends CI_DB_driver { }');
 }
 }

 require_once(BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver.php');

 // Instantiate the DB adapter
 $driver = 'CI_DB_'.$params['dbdriver'].'_driver';
 $DB = new $driver($params);
 if ($DB->autoinit == TRUE)
 {
 $DB->initialize();
 }

 return $DB;

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务