在PHP中匿名函数,也叫做闭包函数,允许临时创建一个没有指定名称的函数,经常用作回调函数的参数
什么是闭包,闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。“闭包”一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及他们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)。
通常,子函数可以使用父函数中的局部变量,这种行为就叫做闭包
匿名函数:就是没有名称的函数,匿名函数可以赋值给变量,对象传递,不过匿名函数仍然是函数,因此可以调用,还可以传入参数,匿名函数特别适合作为函数或方法的回调
闭包:是指在创建时封装周围状态的函数,即使闭包所在环境不存在了,闭包中封装的状态依然存在
$da='helloe';
// use 传递参数,可以不用 $a= function($da){
$a= function() use ($da){
echo $da.'888';
};
//最终执行,将变量当作函数,传入参数即可
$a($da);
// preg_replace_callback 第二个参数是一个回调函数,将闭包函数当作回调函数,传入
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
//将匿名函数当作参数传递,并且调用它
function callFunc( $func ) {
$func( "some string\r\n" );
}
$printStrFunc = function( $str ) {
echo $str.'33';
};
callFunc($printStrFunc);
//也可以直接将闭包函数进行传递
callFunc(function( $str ) {
echo $str.'33';
});