Yii 中是否有对类型化模型的内置支持?例如,如果我有一个名为 Flashlight、Lock 和 Folder 的类,它们都扩展了我的 Product active Record 模型,并且我想通过 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;
}