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 に答える