匿名函数
在PHP5.3.0以上版本有效
也称闭包函数,可以有参数,有返回值,结尾处必须加分号
$func = function(){
};
$func();
匿名函数的一个用法,类似于闭包。
function demos($fun){
echo $fun();
}
demos(function(){
return "@22222".'<br>';
});
闭包
闭包的实现主要是靠匿名函数
将匿名函数在普通函数中当做参数传入,也可以被返回。这就是一个简单地闭包。
特点:
1.闭包外层是个函数
2.闭包内部都有函数
3.闭包会return内部函数
4.闭包返回的函数内部不能有return
5.执行闭包后,闭包内部变量会存在,闭包内部函数的内部变量不会存在
6.闭包函数返回时,函数内部变量处于激活状态,函数所在栈区依然保留
function demo(){
$a = 10;
$b = 20;
//关键词use 使匿名函数能调用函数内部的参数,&的引用,使变量的值发生改变
$one = function($str) use(&$a,&$b){
echo $str."<br>";
echo $b."<br>";
$a++;
echo $a."<br>";
//内存函数不能加返回值,不然直接终止
};
return $one;
}
$var = demo();
$var = ("what");
$var = ("123");//通过两次调用,发现每次a的值均有变化
闭包的应用场景
1.保护函数内的变量安全。外层函数中变量只有内部函数才能访问,而无法通过其他途径访问到,因此保护了外层变量的安全性。
2.在内存中维持一个变量,外层函数中的变量一直存在于内存中,因此每次执行都会用到。