CodeIgniter中autoload('database')源码部分

来源:互联网 发布:沪江网校雅思 知乎 编辑:程序博客网 时间:2024/06/05 14:55

群里有人问,为什么CI配置文件中autoload的database在libraries中,但是libraries里又没有这个文件,其实看看源代码自然就知道了,这就是开源的好处之一。如果你说你找不到,那下面我帮你找。

找到下面的文件

system/core/Loader.php

大约在1029行开始的那个方法,截取部分

// Load librariesif (isset($autoload['libraries']) AND count($autoload['libraries']) > 0){// Load the database driver.if (in_array('database', $autoload['libraries'])){$this->database();$autoload['libraries'] = array_diff($autoload['libraries'], array('database'));}// Load all other librariesforeach ($autoload['libraries'] as $item){$this->library($item);}}

如果是 database,则会调用 $this->database(); 这个方法,下面再看下这个方法

public function database($params = '', $return = FALSE, $active_record = NULL){// Grab the super object$CI =& get_instance();// Do we even need to load the database class?if (class_exists('CI_DB') AND $return == FALSE AND $active_record == NULL AND isset($CI->db) AND is_object($CI->db)){return FALSE;}require_once(BASEPATH.'database/DB.php');if ($return === TRUE){return DB($params, $active_record);}// Initialize the db variable.  Needed to prevent// reference errors with some configurations$CI->db = '';// Load the DB class$CI->db =& DB($params, $active_record);}

看到了吧,知道了吧。不要说找不到,如果你还找不到,证明你还没理清逻辑。慢慢来...


原创粉丝点击