jaka 发表于 2011-4-5 21:51:11

请教:怎么理解这个函数调用前面的&

看CI的源码:在common.php文件中定义了 function is_loaded($class = '')
在Controller.php中有构造函数中有这样调用 $this->load->_base_classes =& is_loaded();
请问函数调用前面的&还需要么

jeongee 发表于 2011-4-5 22:09:32

本帖最后由 jeongee 于 2011-4-5 22:13 编辑

返回的是静态变量$_is_loaded的引用,应该是需要的(可以了解一下PHP变量的作用域吧,里面有将static的作用),这样就不需要在让其他地方更改$_is_loaded的值的时候,还要再一次进行一次$this->load->_base_classes = is_loaded();的操作了

jaka 发表于 2011-4-5 22:45:43

谢谢版主的回复,我觉得要返回静态变量$_is_loaded的引用,需要在函数定义前面也加上&,就是
function &is_loaded($class = ''),而在源码里面并没有加&,不知道是不是我误解了

jeongee 发表于 2011-4-5 23:05:43

本帖最后由 jeongee 于 2011-4-5 23:08 编辑

不需要的吧,即使function &is_loaded($class = '')
也只有这样& is_loaded();调用才会得到引用的。
另外,即使在is_loaded函数中写return &$_is_loaded;也是可以的

2009cms 发表于 2011-4-25 19:28:37

函数名本身就已经是地址了吧?

jaka 发表于 2011-4-25 20:59:24

本帖最后由 jaka 于 2011-4-25 21:01 编辑

现在我已经明白了,函数前面加上&只是“引用了”函数is_loaded()返回的结果。而函数is_loaded在定义的时候前面没有加&,所以调用is_loaded(),返回的结果只是静态变量$_is_loaded的拷贝
最后的结果是,$this->load->_base_classes“引用了”静态变量$_is_loaded的一份拷贝
页: [1]
查看完整版本: 请教:怎么理解这个函数调用前面的&