PHP是否支持use
a 范围内的局部变量,Closure
即使这个变量是通过创建的Closure::fromCallable()
?
通常我会做
$value = 'foobar';
$callback = function() use (&$value) {
$value .= ' string';
return $value;
};
var_export($callback()); // prints 'foobar string'
但是当有更复杂的代码时,我如何获得相同的结果呢?
class A
{
public function __construct()
{
$value = 'foobar';
$callback = Closure::fromCallable([ $this, 'myCallable' ]);
var_export( $callback() );
}
protected function myCallable()
{
$value .= ' string';
return $value;
}
}
我知道在这种情况下我可以将值作为可调用参数传递,但我之所以写作是因为对 PHP 的工作原理感到好奇。
另外,是的,在内部使用 $valuemyCallable
而不在任何地方声明它是非常荒谬的。但是,它更多的是关于好奇心而不是正确性
我已经尝试过$callback = Closure::fromCallable([ $this, 'myCallable' ]) use ($value);
了,但它因语法错误而失败。
该方法不应该fromCallable
支持在闭包的范围内传递我们想要的变量,替换use
语句的功能吗?