闭包是指在创建时封装周围状态的函数。即使闭包所在的环境不在了,闭包中封装的状态依旧存在。注意在php中匿名函数=闭包函数。这点要个js区分开来。
function Car ($name,$name1) {
return function ($status,$status1) use ($name,$name1) {
return sprintf("car %s is %s and %s is %s ",$name,$status,$name1,$status1);
};
}
//调用函数返回一个闭包,闭包保存了之前的状态
$car = Car("bmw","byD");
//var_dump($car);die;
//调用闭包,闭包对象实现了__invoke魔术方法,只要变量名后面有(),PHP就会查找并调用__invoke()方法
echo $car("running","stop");
//返回 car bmw is running and byD is stop
网友评论