我有一个类,在类A
中有一个test
函数。我想在$invoker's
函数体中获得$server
的引用。我使用Closure
获得$this
的引用,但我无法使用闭包获得$server
的引用,因为$server
是在定义$inovker
之后定义的。
谢谢。
class A {
public test() {
$self = $this;
$invoker = function () use($self){
$self.test2(); // ok, no problem, Closure is my best friend
$server.someMethod(); //Error, How to access $server here?
}
$server = new B($invoker);
}
public test2(){
echo "Thank you";
}
}
这有点像鸡蛋问题。由于PHP从上到下进行处理,所以这是不可行的。您所能做的就是创建一个全局变量来保存$server。您将这个变量传递给调用者,但只有在调用了类B之后,您才能使用全局变量。我不建议这样做,因为您依赖于未初始化的变量。这看起来像是你在PHP中尝试一些C逻辑。