我有一个带有Component 属性的模型。每次初始化/获取此模型时,都应预先计算此值(有一个生成它的函数)。
我将此“默认值”放入属性的 getter 中:
public function getCid(){
if ($this->_cid == null ){
$this->_cid = generateCid();
}
return $this->_cid;
}
当我调用它时,它的 get 方法正常工作:
$model->cid; //returns good value
但是,当我尝试使用其他带有getAttributes()
函数的参数来获取它时,它不会调用它的 get 方法。
$model->getAttributes(array('cid')); //just to try only this property.
我不想欺骗数组来独立获取它的值$model->cid
并将其合并到getAttributes
返回数组中,因为我的应用程序中有更多属性,我正在寻找一个快速的解决方案。
那么我应该在哪里移动这个生成器,或者我应该改变什么来轻松地获得这个生成的 id?
更新:
我创建了一个基础 ActiveRecord 类,它扩展了CActiveRecord
并添加了以下函数:
public function getAttributes($names=true){
$base = parent::getAttributes($names);
foreach($base as $key => $value)
if(!$this->hasAttribute($key))
$base[$key] = $this[$key];
return $base;
}
这会调用每个添加的属性的 get 方法,因此它会更新它的内容。