2

一部のプロパティの Yii モデルでは、実際のプロパティが null または空の場合にデフォルトを返したいと考えています。

たとえば、私が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 メソッドを探します。

あなたの例では、ゲッター関数を定義する必要があります:

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