PHP的闭包用法(function (参数) use (arg[])的用法)

一开始看到function (参数) use (arg[])的用法还是感觉很陌生的,后来看了一下,就是php的闭包,也就是匿名函数的用法。详细的demo可以看下方链接。
我的理解是: 就是和java一样的匿名函数,只是有了一个use关键字,这个关键字传递进去的参数,一旦在函数内进行了修改,函数外再调用就会发生同样的变化。类似于c的地址传递。因为php的变量作用域,在类中定义的变量,是不能在函数内部直接使用的。所以要use传递进去,达到类似java的类变量的那种用法的效果。
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。也因此,为了扩展作用域,所以有了use()关键字来实现。
例如:
使用use的时候

<?php
function test() {
    $b = 'hello';
    return function ($a) use ($b) {
        echo $b ." ". $a;
    };
}
$b = test();
$b('world');//结果是hello world
?>

不使用use的时候:

<?php
function test() {
    $b = 'hello';
    return function ($a)  {
        echo $b ." ". $a;
    };
}
$b = test();
$b('world');
?>
//报错

报错如下所示:
在这里插入图片描述
就是说,b没有定义,也就是说在函数内部无法感应到test里的$b,这点和java之类的语言就很不一样了。所以要想到达一样的效果,就用了use即可。而且还是地址传递,值更新共享。

链接如下:

https://www.php.cn/php-weizijiaocheng-396552.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值