访问被引用的类


Access class being referenced to?

我知道这似乎是一个奇怪的问题,但假设我有两个类;

class Class1 {
    private $foo;
    function addBar(Class2 &$bar)
    {
        $this->foo = $bar;
    }
}

class Class2 {
    private $foo
}
$a = new Class1;
$b = new Class2;
$a->addBar($b);

有什么方法Class2可以从Class1读取信息?即使它们在这里位于相同的代码块中,它们也在我的脚本中的单独文件中。我需要这个的原因是因为我Class2通过引用链接,但是Class2Class1之前不允许运行,并且我知道我可以传递另一个变量来引用Class2 Class1(例如。 $b->addFoo($a)),但如果可能的话,我宁愿避免这样做。

我希望这能做到!
提前致谢

编辑

感谢所有帮助过我的人,我决定换一种方式。再次感谢。

class Class1 {
    private $foo;
    function addBar(Class2 $bar)
    {
        $this->foo = $bar;
        $bar->addBar($this);
    }
}
class Class2 {
    private $foo
    function addBar(Class1 $bar)
    {
        $this->foo = $bar;
    }
}
$a = new Class1;
$b = new Class2;
$a->addBar($b);

Class2可以调用Class1对象上的方法,尽管它无法访问私有数据。 但它必须具有对Class1实例的引用,才能对其调用任何方法。

您的示例没有显示实际包含任何代码Class2,听起来您试图避免在$b上调用方法。 这说不通。 如果你从不调用任何方法,Class2就不能"做"任何事情

class Class1 {
    private $foo;
    function addBar(Class2 &$bar)
    {
        $this->foo = $bar;
        $bar->doSomething();
    }
}

class Class2 {
    private $foo
    function doSomething()
    {
        //code
    }
}
$a = new Class1;
$b = new Class2;
$a->addBar($b);

这样doSomething Class2()addBar() Class1之后运行