Component プロパティを持つ Model があります。この値は、このモデルを初期化/取得するたびに事前に計算する必要があります (それを生成する関数があります)。
この「デフォルト値」をプロパティのゲッターに配置しました。
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 メソッドが呼び出されるため、コンテンツが更新されます。