可能重复:
Use variables inside an anonymous function, which is defined somewhere else
在PHP> = 5.4中,我们有一个Closure
类,其中bind
或bindTo
方法将绑定一个匿名函数添加到一个对象,以便闭包可以访问$this
变量,就好像它是在该类中定义的那样。
一个简单的例子:
<?php
$closure = function() {
echo $this->bla; //prints "bbb"
};
class A
{
public $bla = 'bbb';
public function blaat($closure)
{
$someVar = 'something';
$bc = Closure::bind($closure, $this, 'A');
$bc();
}
}
$a = new A();
$a->blaat($closure);
这一切都非常好,但是use
关键字怎么样?
当我重新绑定类的方法中的闭包时,我可能希望closure
能够访问“本地”定义的变量,以及它的父作用域。例如,上例中的$someVar
变量。但bind
类的Closure
方法并不关心use
关键字或使用父范围变量的能力。
这种方式感觉有些不完整...任何人都知道这是否得到支持,或者可能在使用closure
重新定义bind
时已经有办法使用父范围变量或bindTo
方法?