CI框架中CodeIgniter.php文件中& $this如何理解?
CI框架中CodeIgniter.php文件中第39行self::$instance =& $this;
是&$this什么意思?&$this如何理解?$this不也是引用么?为什么不直接用self::$instance = $this;???
引入单例模式,具体什么是单例模式自己好好百度学一下。带&是传值方式而不是赋值,因为这里的$this的修改和新增需要全局一致不能创建多了单例这就是单例的精髓。 gogogo1027 发表于 2015-8-20 01:55
引入单例模式,具体什么是单例模式自己好好百度学一下。带&是传值方式而不是赋值,因为这里的$this的修改和 ...
抱歉,我还是不理解为什么不直接用self:instance = $this;而必须用self:instance =& $this;???
l585826 发表于 2015-8-20 18:45
抱歉,我还是不理解为什么不直接用而必须用???
说个很简单的例子,解释传指与赋值的区别。
假如你在一个helper里面引入CI的单例:
$CI = get_instance(); //这个就是CI模型里的$this.
$CI->load->model('user_model');
$data = $CI->user_model->do_something();
这个时候,如果你使用的是 $CI = get_instance();
则后面的其他控制器里你不能直接使用$this->user_model->do_something(),而必须重新加载这个模型并实例化。这个$CI 实际上已经是第二个单例了
而如果你一开始的时候使用$CI =& get_instance();这就代表$this是传址给$CI,$CI的所有改动都其实是$this的改动,全局可用,保证一个单例。
如果还不清楚可以加我QQ:349703434,我演示给你。
页:
[1]