7

PHP 7.4 引入了箭头函数。它还引入了隐式的按值范围绑定,从而消除了对use关键字的需求。

现在,如果我们想通过常规匿名函数的引用来使用闭包范围之外的变量,我们可以这样做:

$num = 10;
call_user_func(function() use (&$num) {
$num += 5;
});
echo $num; // Output: 15

但是使用箭头函数似乎是不可能的

$num = 10;
call_user_func(fn() => $num += 5);

echo $num; // Output: 10

那么如何$num通过引用使用变量呢?

4

1 回答 1

8

阅读有关它的文档,它说...

按值变量绑定
如前所述,箭头函数使用按值变量绑定。这大致相当于对箭头函数中使用的每个变量 $x 执行一次 use($x)。按值绑定意味着不能从外部范围修改任何值:

$x = 1; 
$fn = fn() => $x++; // Has no effect 
$fn(); 
var_dump($x); // int(1)

所以ATM是不可能的。

于 2019-11-28T07:01:29.090 回答