PHP:如何从关联类访问方法

时间:2016-10-19 23:05:44

标签: php

我有一个类,它有一个属于第二类的属性,也有一个属于第三类的属性:

$classOne = new ClassOne;
$classOne->classTwo = new ClassTwo;
$classOne->classTwo->classThree = new ClassThree;

因此,我可以这样做:

$classOne->classTwo->classThree->someClassThreeMethod();

我想做的是:

classThree {
    someClassThreeMethod() {
        $classOne->someMethod();
        // some more code
    }
}

每当我尝试这样做时,PHP会告诉我Fatal error: Uncaught Error: Call to a member function someMethod() on null in... 所以,我尝试设置global $classOne(在someClassThreeMethod内),因为它没有工作,所以也尝试$classOne进入$GLOBALS(也没有工作 - 在全局范围内,在ClassThree实现之外)。

那么,最后,如何从关联类中访问someMethod

更新
我对如何处理到目前为止给出的答案有了更好的了解,所以我重新拟定了一个稍微不同的问题:如何设置$classOne可以从someClassThreeMethod内进行访问?< / p>

1 个答案:

答案 0 :(得分:0)

您应该做的是在创建新类时将包含对象作为参数传递。

class classTwo {
    private $classOne;

    public function __construct($classOne) {
        $this->classOne = $classOne;
    }

    public someClassTwoMethod() {
        $this->classOne->someMethod();
    }
}

然后你会这样做:

$classOne = new ClassOne;
$classOne->classTwo = new classTwo($classOne);