PHP实现闭包函数时主要依靠匿名函数,在闭包函数中使用外界变量时使需用USE关键字,USE引用过来的变量是一个副本,若在闭包函数中修改变量的值只需在变量前添加取址符&即可。具体demo如下:
1.匿名函数实现闭包
<?php
// 申明一个匿名函数
$b = function($p){
return pow($p,2);
};
function a($p){
echo $p('2');
}
// 匿名函数作为参数传递
a($b);
// 匿名函数直接传递
a(function ($p){
return pow($p,3);
});
#结果
#48
2.在函数中把匿名函数返回,并且调用它
<?php
function a(){
$func = function ($p){
return pow($p,2);
};
return $func;
}
$b = a();
echo $b('2');
#结果
#4
3.闭包函数引入外界变量
<?php
function demo(){
$i = 1;
$func = function() use ($i){ //使用use关键字引入外界变量
echo ++$i;
};
$func();
echo $i;
}
// 输出函数,
demo();
#结果
#21
4.闭包函数修改外界数据
<?php
function demo(){
$i = 1;
$func = function() use (&$i){ //使用取地址符&引入外界变量而非复制
echo ++$i;
};
$func();
echo $i;
}
// 输出函数,
demo();
#结果
#22