1

我有一个动态加载类作为另一个类中的变量。我已按如下方式实现它:

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。

4

0 回答 0