这两天公司要搭一个论坛,看dz的源码,发现了下面的这种写法
calss discuz_application{
static function &instance() {
static $object;
if(empty($object)) {
$object = new self();
}
return $object;
}
}
public static function creatapp() {
if(!is_object(self::$_app)) {
self::$_app = discuz_application::instance();
}
return self::$_app;
}
研究了下 方法名前面加 & 的作用
function &test()
{
static $b=0;//申明一个静态变量
$b=$b+1;
echo $b;
return $b;
}
$a=test();//这条语句会输出 $b的值 为1
$a=5;
$a=test();//这 条语句会输出 $b的值 为2
$a=&test();//这条语句会输出 $b的值 为3 相当于这样的效果($a=&b;)
$a=5;
$a=test(); //这条语句会输出 $b的值 为6
a=test()方式调用函数,只是将函数的值赋给a而已, 而a做任何改变 都不会影响到函数中的b.
而通过a=&test()方式调用函数呢, 他的作用是将returnb中的 b变量的内存地址与a变量的内存地址,
指向了同一个地方. 即产生了相当于这样的效果(a=&b;) 所以改变a的值,也同时改变了b的值,所以在执行了:a=&test(); a=5;以后,b的值变为了5。
本文探讨了PHP中静态方法的使用方式,特别是如何通过引用返回变量,以及这种方式如何影响变量之间的关系。通过实例展示了不同调用方式下变量的变化情况。
991

被折叠的 条评论
为什么被折叠?



