我正在修改依赖于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的scenario属性,因为它基于CModel,与基类为CActiveRecord时的方式相同?
答案 0 :(得分:0)
当你调用model()时,它是第一次为你创建一个实例,然后引用这个缓存的对象。
如果您的方法是静态的,那么不依赖于实例化版本的属性,您将会在以后遇到麻烦。
检查静态属性是否满足您的需求,或将场景作为参数传递给静态调用。
无论如何,static its evil,如果可以,请避免使用。