我有一个动态加载类作为另一个类中的变量。我已按如下方式实现它:
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
但这真的是最好/唯一的方法吗?看起来很hacky。