0

Yii 中是否有对类型化模型的内置支持?例如,如果我有一个名为 Flashlight、Lock 和 Folder 的类,它们都扩展了我的 Product active Record 模型,并且我想通过 Yii 关系确保它是类型化类而不是泛型,我该怎么做?

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

4

1 回答 1

2

这称为单表继承

基本上你覆盖模型的实例化方法来返回你需要的类:

// 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;
}
于 2012-12-20T14:57:13.627 回答