1

我正在尝试向我的 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。我不明白为什么这会是一个问题。有什么我想念的吗?

谢谢

4

1 回答 1

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如果它还不存在,它就会自动实例化,一次解决两个问题。

于 2013-02-13T10:04:30.993 回答