2018-04-28 12:47:15 2258次浏览 3条回答 0 悬赏 10 金钱

$model->setScenario('update'); or $model->scenario = 'update';

这两个有啥不同,setScenario scenario 哪个是要被淘汰了吗

最佳答案

  • 回答于 2018-04-28 18:47 举报

    条条大路通罗马。

    1 条回复
    回复于 2018-04-28 19:59 回复

    我要通大汉

  • 回答于 2018-05-02 18:18 举报

    $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 条回复
    回复于 2018-05-02 18:46 回复

    谢谢,大大的详细解答

您需要登录后才可以回答。登录 | 立即注册
蛋蛋的蛋
主管

蛋蛋的蛋

注册时间:2018-04-02
最后登录:2024-03-11
在线时长:34小时29分
  • 粉丝4
  • 金钱64
  • 威望20
  • 积分604

热门问题