CI版本:2.1.4
在你自定义的类库中初始化CodeIgniter资源

要在你自定义的类库中访问CodeIgniter的原始资源,你必须使用 get_instance() 函数。这个函数返回一个CodeIgniter super object。

一般来说在你的控制器函数中你可以通过 $this 调用任何可用的CodeIgniter函数:
$this->load->helper(‘url’);
$this->load->library(‘session’);
$this->config->item(‘base_url’);
//etc.

$this, 只直接作用在你自己的控制器,模型和视图中.当你在自定义类中想使用CodeIgniter原始类时,你可以这样做:

首先,定义CodeIgniter对象赋给一个变量:
$CI =& get_instance();

一旦定义某个对象为一个变量,你就可以使用那个变量名 取代 $this:
$CI =& get_instance();

$CI->load->helper(‘url’);
$CI->load->library(‘session’);
$CI->config->item(‘base_url’);
//etc.

注意: 你将注意到get_instance()这个函数通过被引用的方式被传递:

$CI =& get_instance();

这十分重要. 通过引用的方式赋给变量将使用原始的 CodeIgniter 对象,而不是创建一个副本。
摘自:http://codeigniter.org.cn/user_guide/general/creating_libraries.html

$CI =& get_instance();

get_instance函数在:/system/core/CodeIgniter.php中(228行)。

// Load the base controller class
require BASEPATH.'core/Controller.php';

function &get_instance()
{
    return CI_Controller::get_instance();
}

并引用,Controller.php文件的CI_Controller类。

相关:CI学习笔记,关于get_instance()