我有一个动态加载类作为另一个类中的变量。我已经实现了如下:
public function &__get($key) {
if (array_key_exists($key, $this->values) { return $this->values[$key]; }
if ($key == "dr") {
if (!$this->dr) { $this->dr = new DR(); }
return $this->dr;
}
}
当我从课外使用这个功能时,它按预期工作:
echo $p->dr->name;
无缝创建DR并返回其名称。
当我在类中使用相同的技术时,__get()
函数不会被调用,并且我收到NULL:
function drname() {
return $this->dr->name;
}
我想我理解为什么(否则PHP会在我的第一个例子中创建无限循环),但我该如何解决这个问题呢?我找到了一个使用$this->__get('dr')->name
的解决方案,但这真的是最好/唯一的方法吗?这看起来很糟糕。