在箭头函数中通过引用使用变量

Fat*_*ror 6 php pass-by-reference arrow-functions php-7.4

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

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

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

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

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

echo $num; // Output: 10
Run Code Online (Sandbox Code Playgroud)

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

Nig*_*Ren 5

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

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

$x = 1; 
$fn = fn() => $x++; // Has no effect 
$fn(); 
var_dump($x); // int(1)
Run Code Online (Sandbox Code Playgroud)

所以ATM是不可能的。