【问题标题】:Kohana Model - adding additional propertiesKohana 模型 - 添加其他属性
【发布时间】:2013-02-11 02:57:21
【问题描述】:

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

谢谢

【问题讨论】:

  • 对我来说,这段代码有效。你确定 Kohana 能找到 Newclass 吗?您可以尝试创建另一个类,可能是 View 或其他东西,看看它是否有效。此外,由于 Kohana 3.3 类应该以大写字母 (Mymodel) 开头。
  • application/bootstrap.phpKohana::init()方法中设置errors => true

标签: php class kohana


【解决方案1】:

扩展__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 不存在时会自动实例化,同时解决两个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多