场景设置 [ 2.0 版本 ]
$model->setScenario('update'); or $model->scenario = 'update';
这两个有啥不同,setScenario scenario 哪个是要被淘汰了吗
最佳答案
其他 2 个回答
-
$model->setScenario('update'); or $model->scenario = 'update';
解释一下:
首先要说一下PHP的set和get,也是yii把php的set,get运用的很好的地方。
$model 是一个对象。 -> 是指向这个对象的属性,这个如果不懂就不用往下看了。
$model->setScenario('update') 这样是正常的写法,因为在对象$model下面肯定设置了一个函数叫 setScenario。(具体这个函数在哪你可以自己找,不过肯定是存在的。)
就好比我们创建一个类,里面写setXxx(),然后new一个对象调用这个setXxx();说到这里,以上的都很好理解了。重点是这里,$model->scenario 其实也没什么,也是yii把php的set,get运用的很好的地方(第二遍说了)
当执行$model->scenario($model对象没有这个函数 ,正常来说肯定报错,但是PHP回去执行魔术函数set)而在Yii里重写了这个set,大概意思就是public function __set(){Yii重写了这里,如果找不到scenario,这个函数,那他就会在前面加一个set。这样 'set'.$xxxx} 最后拼出来的就是setScenario,上面说了,setScenario这个是可定有的。所以,$model->scenario 这样执行,其实内部就是在 $model->setScenario('update') 这样执行。
共 1 条回复
蛋蛋的蛋
最后登录:2024-03-11
在线时长:34小时29分
- 粉丝4
- 金钱64
- 威望20
- 积分604