php5.3有一个非常赞的新特性,那就是支持匿名函数(闭包)。匿名函数可用于动态创建函数,并保存到一个变量中。举个栗子
$func = function(){
exit('Hello world!!');
};//这里必须要有;结尾
$func();
等效于
function func(){
exit('Hello world!!');
}
func();
看上去没什么新奇的地方是不?(☆_☆)/~~
别急,继续看。
看这段代码:
function operate($operator){
if($operator == "-"){
return function($a,$b){
return $a-$b;
};
}else{
return function($a,$b){
return $a+$b;
};
}
}
$subtraction = operate("-");
echo $subtraction(4,3);//1
$addition = operate("+");
echo $addition(1,2);//3
通过operate函数,我们可以生成不同的函数作为结果返回,并将这个结果直接作为函数调用,上面的代码分别动态创建了减法运算和加法运算函数。
闭包特性 :
经常写js的同学应该知道js的闭包特性,简单的说就是在一个函数里可以定义子函数,父函数中的变量在子函数中可以直接使用,那么PHP的闭包怎么用呢?有一点区别。
function func1($a){
return function() use ($a){
echo $a;
};
}
$a = func1("a");
$a();//输出a
当你想将外层变量传进内层匿名函数时,使用use (变量)的方式。