1

我正在修改依赖于 CActiveRecord 的现有功能代码。我现在连接到 sybase,它没有模式驱动程序,所以我用 CModel 而不是 CActiveRecord 重写。我的问题可能是我不理解这个通用的 OOP 概念?

原文:MyModelController.php

MyModel::model()->scenario='case1';

指代::model()不再有效...因为我相信此方法仅在基类为 CActiveRecord 时有效。

/**
 * Returns the static model of the specified AR class.
 * @param string $className active record class name.
 * @return ClientProg the static model class
 */
public static function model($className=__CLASS__)
{
    return parent::model($className);
}

既然 MyModel 是基于 CModel 的,我该如何设置它的场景属性,就像我在基类是 CActiveRecord 时所做的那样?

4

1 回答 1

0

当你调用 model() 时,它是在内部为你第一次创建一个实例,然后引用这个缓存的对象。

如果你的方法是静态的,那么不依赖于实例化版本的属性,你以后会头疼的。

检查静态属性是否满足您的需求,或将场景作为参数传递给您的静态调用。

无论如何,static 它是邪恶的,所以如果可以的话,请避免它。

于 2012-12-13T00:08:25.660 回答