2013-03-01 36 views
0

的PHP ORM Granada工作方式如下,以從數據庫中檢索字段:如何用idiorm/granada定義模型字段而不破壞ORM功能?基於<a href="https://github.com/j4mie/idiorm" rel="nofollow noreferrer">Idiorm</a>

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未定義

在同一時間?

+0

相關:http://stackoverflow.com/questions/4713680/php-get-and-set-magic-methods。如果每次調用'__get',我都可以覆蓋'ORMWrapper :: get'函數。但事實並非如此。 – 2013-03-01 14:18:19

回答

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兩個工作。

相關問題