型付きモデルに対する Yii のビルトイン サポートはありますか? たとえば、Flashlight、Lock、Folder という名前のクラスがあり、それらはすべて Product アクティブ レコード モデルを拡張し、それを Yii リレーションを介したジェネリックではなく型付きクラスにしたい場合、どうすればよいでしょうか?
現在、私は __call を上書きしていますが、あまり満足していません。これはおそらく一般的なニーズだと思います。
これは単一テーブル継承と呼ばれます。
基本的に、モデルのインスタンス化メソッドを上書きして、必要なクラスを返します。
// protected/models/Product.php
protected function instantiate($attributes){
switch($attributes['type']){
case 'flashlight':
$class='Flashlight';
break;
case 'lock':
$class='Lock';
break;
case 'folder':
$class='Folder';
break;
default:
$class=get_class($this);
}
$model=new $class(null);
return $model;
}