被引用的访问类?

时间:2012-04-18 12:14:56

标签: php oop class

我知道这可能看起来像一个奇怪的问题,但我说我有两个班级;

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)),但如果可能,我宁愿避免这种情况。

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

修改

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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

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

答案 2 :(得分: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 {{1}} {/ 1}}