我在 PHP 中使用匿名函数,并意识到它们似乎无法访问它们之外的变量。有没有办法解决这个问题?
例子:
$variable = "nothing";
functionName($someArgument, function() {
$variable = "something";
});
echo $variable; //output: "nothing"
这将输出“无”。匿名函数有什么方法可以访问$variable
?
我在 PHP 中使用匿名函数,并意识到它们似乎无法访问它们之外的变量。有没有办法解决这个问题?
例子:
$variable = "nothing";
functionName($someArgument, function() {
$variable = "something";
});
echo $variable; //output: "nothing"
这将输出“无”。匿名函数有什么方法可以访问$variable
?
是的,使用闭包:
functionName($someArgument, function() use(&$variable) {
$variable = "something";
});
请注意,为了使您能够$variable
在匿名函数范围之外修改和检索修改后的值,必须在闭包中使用&
.
如果你的函数很短并且是单线性的,你可以使用箭头函数,从 PHP 7.4 开始:
$variable = "nothing";
functionName($someArgument, fn() => $variable = "something");