请教:怎么理解这个函数调用前面的&
看CI的源码:在common.php文件中定义了 function is_loaded($class = '')在Controller.php中有构造函数中有这样调用 $this->load->_base_classes =& is_loaded();
请问函数调用前面的&还需要么 本帖最后由 jeongee 于 2011-4-5 22:13 编辑
返回的是静态变量$_is_loaded的引用,应该是需要的(可以了解一下PHP变量的作用域吧,里面有将static的作用),这样就不需要在让其他地方更改$_is_loaded的值的时候,还要再一次进行一次$this->load->_base_classes = is_loaded();的操作了 谢谢版主的回复,我觉得要返回静态变量$_is_loaded的引用,需要在函数定义前面也加上&,就是
function &is_loaded($class = ''),而在源码里面并没有加&,不知道是不是我误解了 本帖最后由 jeongee 于 2011-4-5 23:08 编辑
不需要的吧,即使function &is_loaded($class = '')
也只有这样& is_loaded();调用才会得到引用的。
另外,即使在is_loaded函数中写return &$_is_loaded;也是可以的 函数名本身就已经是地址了吧? 本帖最后由 jaka 于 2011-4-25 21:01 编辑
现在我已经明白了,函数前面加上&只是“引用了”函数is_loaded()返回的结果。而函数is_loaded在定义的时候前面没有加&,所以调用is_loaded(),返回的结果只是静态变量$_is_loaded的拷贝
最后的结果是,$this->load->_base_classes“引用了”静态变量$_is_loaded的一份拷贝
页:
[1]