我有一个类,它有一个属于第二类的属性,也有一个属于第三类的属性:
$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>
答案 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);