在我的Yii模型中,对于某些属性,我想在real属性为null或为空时返回一些默认值。
例如说我有一个display_name
属性。如果尚未设置,我想返回first_name
。
到目前为止,我一直在使用的工作是创建一个具有不同名称的新方法,而不是调用它。但是,如果我能通过简单地以正常方式调用$model->display_name
来实现这一点,那就太好了。
答案 0 :(得分:3)
我可能找到了自己的答案。我正在覆盖__get()
以检查这是否是我正在寻找的属性。我不确定这被认为是“最佳实践”。
public function __get($name) {
$current = parent::__get($name);
switch($name){
case 'display_name':
if(empty($current)){
return $this->first_name;
}
else{
return $current;
}
break;
default:
return $current;
}
}
答案 1 :(得分:0)
扩展CComponent
的类,包括CModel
,CActiveRecord
,首先会查找getter方法。
在您的示例中,您必须定义一个getter函数:
public function getdisplay_name() {
if (! empty($this->display_name)) {
return $this->display_name;
} else {
return $this->first_name;
}
}