Php 如何在不破坏ORM功能的情况下使用idiorm/granada定义模型字段?

Php 如何在不破坏ORM功能的情况下使用idiorm/granada定义模型字段?,php,orm,magic-methods,idiorm,Php,Orm,Magic Methods,Idiorm,基于的PHP orm采用以下方式从数据库检索字段: class ORM { ... public function __get($key) { return $this->get($key); } } class ORMWrapper extends ORM { ... public function get($key) { if (method_exists($this, 'get_' . $key)) { ret

基于的PHP orm采用以下方式从数据库检索字段:

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
,则不会调用magic方法\uuu get,因此ORM不会从数据库中检索字段

我怎么能

  • 能够在我的模型类中声明
    public$field
  • 如果
    $field
    未定义,仍然调用magic getter

同时?

我真正想做的就是让自动完成在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都在工作。

相关:。如果每次调用
\uu get
,我就可以重写
或mwrapper::get
函数。但事实并非如此。