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

[Others] CI源码load_class疑惑,请教

[复制链接]
发表于 2010-4-29 20:54:52 | 显示全部楼层 |阅读模式
我看到CI里,common.php里,有这么一句:
PHP复制代码
$objects[$class] =& instantiate_class(new $name());
 
复制代码

而instantiate_class,很简单:
PHP复制代码
 
function &instantiate_class(&$class_object)
{
 
return $class_object;
}
 
 
复制代码

我不明白,为什么要用instantiate_class函数,而不是直接:
PHP复制代码
$objects[$class] =new $name();
 
复制代码
谢谢~~
发表于 2010-4-29 23:31:23 | 显示全部楼层
我猜可能跟这个& 引用符号有关

得先把引用这个东西弄清楚先
发表于 2010-4-30 09:27:16 | 显示全部楼层
这是为了向后扩展(php4)
因为php4在实例化对象的时候相当php5的__clone()方法

function &instantiate_class(&$class_object)
{

return $class_object;
}而这个函数括号中&是引用原始对象函数名前&是返回一个可修改实例(也就是地址)
发表于 2010-4-30 10:15:08 | 显示全部楼层
你的答案在这里

http://codeigniter.org.cn/forums/viewthread.php?tid=4893

请看我的签名。
 楼主| 发表于 2010-4-30 14:56:39 | 显示全部楼层
回复 4# saturn


   呵呵,没想到这么冷门的问题居然有人问过。

本版积分规则