根据类型获取Yii模型类

时间:2012-12-20 04:27:35

标签: php yii

Yii是否有类型型号的内置支持?例如,如果我有一个名为Flashlight,Lock和Folder的类,它们都扩展了我的产品活动记录模型,我想确保它是类型化的类而不是通用的Yii关系,我该怎么做?

目前我正在覆盖__call,我对此并不满意。我觉得这可能是一个普遍的需求。

1 个答案:

答案 0 :(得分:2)

这称为single table inheritance

基本上,您覆盖模型的instantiate方法以返回所需的类:

// 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;
}