php如何在定义对象之前在闭包中获取引用

php如何在定义对象之前在闭包中获取引用,php,Php,我有一个类,类a中有一个test函数。我想在$invoker的函数体中获取对$server的引用。我使用Closure获取$this的引用,但我无法使用Closure获取$server的引用,因为$server是在定义了$inovker之后定义的 谢谢 class A { public test() { $self = $this; $invoker = function () use($self){ $self.test2();

我有一个类,类
a
中有一个
test
函数。我想在
$invoker的
函数体中获取对
$server
的引用。我使用
Closure
获取
$this
的引用,但我无法使用Closure获取
$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逻辑