*** $CI =& get_instance() 用法:关于CodeIgniter中get_instance() 函数

 

 使用场景:php

注意 get_instance 的使用场景,这个方法并非用在控制器中的。
而是用在控制器外面,好比类库中,想操做 CI 超级对象的时候,超级对象实际上就是当前控制器的实例。windows


 

 

你随便下个CI框架的源码都会看到不少的get_instance() 函数,这个函数是用来获取CI 的全局超级对象,CI 是单例模式的框架,全部全局有一个超级对象。由于只有一个实例,因此不管这个函数使用多少次都不会消耗资源的。通常来讲,只有在helper或library中才使用get_instance。session

之前咱们都是这样用的:$this->load->library('session');框架

$this只做用在你本身的控制器、模型、视图中,若是你在自定义的类中也想使用CI的函数话,你就能够这样作:函数

//经过引用的方式赋给变量将使用原始的 CodeIgniter 对象this

$ci = &get_instance();url

//这样就可使用ci的函数了spa

$ci->load->library('session');对象

 


 

要你自定义的类库中访问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对象,而不是建立一个拷贝 

同时,请注意: 若是你使用php 4,那么请最好不要在类的构造函数中调用 get_instance() .php4在引用位于构造函数中的CI super object时存在问题,由于对象只有在类彻底实例化后才存在.ci


对于"CI官方手册说调用get_instance()函数时,要用&引用符号;缘由是为了防止对象生成副本"这一句里面的"防止对象生成副本",类比Unix中的硬连接、软连接,是否是就是防止生成软连接,就像windows中的,只生成某个软件的启动exe的别名,而不要发送或复制快捷方式到其余地方而产生快捷方式的复制?

相关文章
相关标签/搜索