用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6986|回复: 9
收起左侧

[已解决] 请问,$this->obj =& get_instance();是什么意思?

[复制链接]
发表于 2010-8-20 14:19:11 | 显示全部楼层 |阅读模式
大家好,请问$this->obj =& get_instance(); 这个写法有什么作用呢?
发表于 2010-8-20 14:59:43 | 显示全部楼层
你说 =& ?
这是为了兼容 PHP4,意思是引用传递,具体请参考 PHP 手册,和 CI 无关。
 楼主| 发表于 2010-8-20 15:35:16 | 显示全部楼层
谢谢HEX 我找到手册中的说明了
要你自定义的类库中访问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时存在问题,因为对象只有在类完全实例化后才存在.
发表于 2011-7-15 14:54:42 | 显示全部楼层
路过  谢过上一楼的
发表于 2011-7-15 16:49:06 | 显示全部楼层
{:soso_e103:}

评分

参与人数 1威望 -3 收起 理由
jeongee -3 恶意灌水

查看全部评分

发表于 2011-12-17 19:15:24 | 显示全部楼层
多谢楼主和Hex,收益了
发表于 2011-12-18 10:39:45 | 显示全部楼层
我本来也不懂~上次在钩子里面看到的
发表于 2011-12-18 10:40:40 | 显示全部楼层
chchmlml 发表于 2011-7-15 16:49

这兄弟怎么这么悲剧~才发了5个帖子就被扣18...
发表于 2012-1-9 17:28:42 | 显示全部楼层
发表于 2012-6-14 11:33:11 | 显示全部楼层

本版积分规则