我正在尝试为我的Kohana(v3.3)模型添加额外的属性。
class Model_mymodel extends ORM {
protected $_myvar = NULL;
public function set_myvar() {
$this->_myvar = new Newclass();
}
public function get_myvar() {
return $this->_myvar;
}
}
然后我尝试设置它
$inst = ORM::factory('mymodel', 1)->find();
$inst->set_myvar();
var_dump($inst->get_myvar());
返回NULL。我不明白为什么这会是一个问题。有什么东西我不见了吗?
由于
答案 0 :(得分:0)
扩展__get
方法
class Model_mymodel extends ORM {
protected $_myvar = NULL;
function __get($name) {
if ($name === 'myvar'){
if (!($this->_myvar instanceof Newclass){
$this->_myvar = new Newclass;
}
return $this->_myvar;
}
return parent::__get($name);
}
}
这样Newclass
会自动实例化,如果它还不存在,一次解决两个问题。