ZF3:$request->getQuery('my_var') vs $this->params()->fromQuery('var_name')?

ZF3: $request->getQuery('my_var') vs $this->params()->fromQuery('var_name')?

我正在从这个 book 学习 ZF3,我遇到了这个:

在我的控制器中,我可以像这样在 ZF3 中获取 $_GET['var_name']:

$request = $this->getRequest();
$request->getQuery('var_name');

或者这样:

$this->params()->fromQuery('var_name');

两者有什么区别? (重新表述问题:为什么有两种方法可以做同样的事情?)。在特定情况下,一个比另一个更受欢迎吗?

数据是请求的一部分,因此它保存在请求对象中。 params 控制器插件(您的第二个示例)提供了一种更简洁的方式来访问此数据,因此您应该使用它来从控制器访问数据。

$this->params()->fromQuery('var_name');

这里$this->params()是controller插件,只能在controller中使用。

但是

$request = $this->getRequest();
$request->getQuery('var_name');

您可以访问来自任何 class 的请求,如下所示-

$request = new Request();