Yii 2 - 使用$ _POST和Yii :: $ app-> request-> post()之间的区别

时间:2015-12-19 09:11:39

标签: php post yii

我正在从一本书(Yii 2和PHP的Web应用程序开发)学习Yii。我遇到了如下代码:

if ($model->load(Yii::$app->request->post()) && $model->save()) {...}

但是这段代码似乎功能相同:

if ($model->load($_POST && $model->save()) {...}

使用两个之间有什么实际区别吗?

1 个答案:

答案 0 :(得分:2)

使用request对象的一个​​重要原因是 testability

执行控制器操作的功能测试应该是测试套件的一部分。对于简单的场景,例如“如果我打开/event/calendar页面,我会得到一个事件列表”,您可以创建模拟请求,让框架处理它们,并检查结果¹。您可以通过直接将值分配给$_GET$_POST和其他超级全局来进行此测试......但使用框架的request对象要容易得多,并且框架通常对这种情况有很好的支持。

例如:

¹:对于涉及用户互动的更复杂的场景,这还不够,你需要像Selenium这样的工具:http://www.yiiframework.com/doc/guide/1.1/en/test.functional