DB.php
最后更新于:2022-04-01 20:46:26
~~~
$dns['scheme'],
'hostname' => (isset($dns['host'])) ? rawurldecode($dns['host']) : '',
'username' => (isset($dns['user'])) ? rawurldecode($dns['user']) : '',
'password' => (isset($dns['pass'])) ? rawurldecode($dns['pass']) : '',
'database' => (isset($dns['path'])) ? rawurldecode(substr($dns['path'], 1)) : ''
);
// were additional config items set?
// 是否设置了额外的配置项
if (isset($dns['query']))
{
// parse_str()解析查询字符串到变量中
parse_str($dns['query'], $extra);
foreach ($extra as $key => $val)
{
// booleans please
// 把字符串转换true,false转换为真正boolean值
if (strtoupper($val) == "TRUE")
{
$val = TRUE;
}
elseif (strtoupper($val) == "FALSE")
{
$val = FALSE;
}
$params[$key] = $val;
}
}
}
// No DB specified yet? Beat them senseless...
// 没有指定要连接的数据库驱动
if ( ! isset($params['dbdriver']) OR $params['dbdriver'] == '')
{
show_error('You have not selected a database type to connect to.');
}
// Load the DB classes. Note: Since the active record class is optional
// we need to dynamically create a class that extends proper parent class
// based on whether we're using the active record class or not.
// Kudos to Paul for discovering this clever use of eval()
// 载入DB类。 注意: 因为active record类是可选的,我们需要动态的去
// 创建一个继承适当的父类(基于我们是否使用active record类)
if ($active_record_override !== NULL)
{
$active_record = $active_record_override;
}
require_once(BASEPATH.'database/DB_driver.php');
// 启用active_record
if ( ! isset($active_record) OR $active_record == TRUE)
{
require_once(BASEPATH.'database/DB_active_rec.php');
// 动态创建CI_DB类继承自CI_DB_active_record类
if ( ! class_exists('CI_DB'))
{
eval('class CI_DB extends CI_DB_active_record { }');
}
}
else
{
// 动态创建CI_DB直接继承自CI_DB_driver
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
// 实例化DB适配器
$driver = 'CI_DB_'.$params['dbdriver'].'_driver';
$DB = new $driver($params);
// 在DB_driver中的字段,用于指定是否要对数据库驱动进行初始化操作
if ($DB->autoinit == TRUE)
{
$DB->initialize();
}
if (isset($params['stricton']) && $params['stricton'] == TRUE)
{
$DB->query('SET SESSION sql_mode="STRICT_ALL_TABLES"');
}
return $DB;
}
/* End of file DB.php */
/* Location: ./system/database/DB.php */
~~~
';