了解PHP的返回引用和局部静态变量
先阅读手册
==========
从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符&:
<?php
function&returns_reference()
{
$someref=0;
return$someref;
}
$newref=&returns_reference();//相当于$newref=&$someref;
?>
有关引用的更多信息,请查看引用的解释。
在来看一段很多开源代码喜欢用的单例注册模式
classa{}
classb{}
function&aa($name)
{
static$class=array();//局部静态变量不随方法的执行结束而消失而是坚持到整个源程序结束时才结束生命周期
if(!$class[$name]) //所以此处的声明/初始化语句只在首次声明时起作用
{ //之后再调用此方法时,静态变量不再重新初始化value
$class[$name]=new$name();
}
return$class[$name];
}
$a=&aa('a');
$b=&aa('b');
$a2=&aa('a');
$b2=&aa('b');
echo$a===$a2?'$a和$a2是同一个实例化对象<br/>':'';
echo$b===$b2?'$b和$b2是同一个实例化对象':'';