0

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

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通过引用进行了链接,但在已经链接Class2之前不允许运行Class1,而且我知道我可以传递另一个变量来引用Class2Class1例如$b->addFoo($a)),但如果可能的话,我宁愿避免这种情况。

我希望这可以做到!
提前致谢

编辑

感谢所有提供帮助的人,我决定另辟蹊径。再次感谢你。

4

3 回答 3

1
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);
于 2012-04-18T12:27:19.950 回答
0
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

于 2012-04-18T12:27:45.550 回答
0

Class2可以调用Class1对象的方法,但不能访问私有数据。但它必须引用一个Class1实例才能调用它的任何方法。

您的示例并未显示Class2实际包含任何代码,听起来您正试图避免在$b. 那没有意义。 如果您从未在其上调用任何方法,则Class2无法“做”任何事情。

于 2012-04-18T12:23:23.180 回答