在
PHP中使用匿名函数时,可以使用use()关键字轻松地从其范围之外使用变量.
在我的情况下,匿名函数已经被定义在某个地方,但稍后再在某个类别中被其他地方调用.
以下代码是为了说明这个想法:
<?PHP $bla = function ( $var1 ) use ($arg) { echo $var1; }; class MyClass { private $func; public function __construct ( $func ) { $this->func = $func; } public function test ( $arg ) { $closure = $this->func; $closure ( 'anon func' ); } } $c = new MyClass($bla); $c->test ( 'anon func' );
我正在做的是创建一个匿名函数并将其存储在变量中.我将该变量传递给类的方法,这就是我要运行匿名函数的位置.
使用关键字的要点是将其定义为
inherit/close over a particular environment state from the parent scope到Closure.
$foo = 1; $fn = function() use ($foo) { return $foo; }; $foo = 2; echo $fn(); // gives 1