0

基于Idiorm的 PHP orm Granada通过以下方式从数据库中检索字段:

class ORM {
  ...

  public function __get($key) {
    return $this->get($key);
  }
}

class ORMWrapper extends ORM {
  ...

  public function get($key) {
        if (method_exists($this, 'get_' . $key)) {
            return $this->{'get_' . $key}();
        } elseif (array_key_exists($key, $this->_data)) {
            return $this->_data[$key];
        }
        elseif (array_key_exists($key, $this->ignore)) {
            return $this->ignore[$key];
        }
        // and so on ...
  }

我的问题是,如果我public $field在我的模型类中定义,魔术方法 __get 不会被调用,所以 ORM 不会从数据库中检索字段?

我怎样才能

  • 能够public $field在我的模型类中声明
  • $field如果未定义,仍然调用魔法吸气剂

同时?

4

1 回答 1

1

我真正想做的就是让自动完成功能在 netbeans 上工作。

像这样声明我的模型类就可以了:

/**
 * @property int $address_id
 * @property Address $address
 * @property String $name
 * ...
 */
class Activity extends Model {

    public function address() {
      return $this->belongs_to('Address');
    }

//...
}

这样我可以做到

$activity->address->name;

而且我的完成和 ORM 都在工作。

于 2013-03-01T14:46:26.620 回答