在PHP中使用$ this->键和重载的__get()

时间:2012-06-26 20:05:51

标签: php

我有一个动态加载类作为另一个类中的变量。我已经实现了如下:

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的解决方案,但这真的是最好/唯一的方法吗?这看起来很糟糕。

0 个答案:

没有答案