2

在我的某些属性的 Yii 模型中,当真实属性为空或为空时,我想返回一些默认值。

例如说我有一个display_name财产。当它还没有设置时,我想退回first_name.

到目前为止,我一直在使用的工作是创建一个具有不同名称的新方法并改为调用这个方法。但是,如果我可以通过简单地调用$model->display_name正常方式来实现这一点,那就太好了。

4

2 回答 2

4

我可能已经找到了自己的答案。我正在__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;
            }
        }
于 2012-11-15T09:53:51.370 回答
0

扩展的类CComponent,包括CModelCActiveRecord首先会寻找一个 getter 方法。

在您的示例中,您将必须定义一个 getter 函数:

public function getdisplay_name() {
    if (! empty($this->display_name)) {
        return $this->display_name;
    } else {
        return $this->first_name;
    }
}
于 2012-11-15T10:14:10.930 回答