$request->request->replace() 是做什么的?

$request->request->replace() what does it do?

我正在检查 symfony 中的一些代码,我发现

$request->request->replace()

实际上,发布了一个表单,并在一个函数中获取了它的值,比如说,

public function someFunction(Request $request){
    $data = $request->request->all() ? : json_decode($request->getContent(), true);
    $request->request->replace($data);
}

当我倾倒时,

$request->request->replace($data)

结果为空。我不明白为什么要用它,它有什么好处?

我搜索了一下,有人说它是用来清理数据的,有人说我们不应该用它来替换请求中的所有参数,而应该使用 set 方法。

由于我是 symfony 的新手,所以我没有得到任何信息。

$request->request->replace() 对提供给它的参数做了什么?

您的 $request 是 Symfony\Component\HttpFoundation\Request 的实例 .使用 $request,您可以访问请求、查询、cookie、属性、文件、服务器等属性,headers。这些属性中的每一个都是 Symfony\Component\HttpFoundation\ParameterBag 类型。 ParameterBag 的实例使用方法 $request->request->all() 提供对请求参数的访问。此方法将 return 'parameters' 属性 的 ParameterBag 实例。

$request->request->replace($data) 会将 ParameterBag 实例中的 'parameters' 属性 设置为 $data。

另外,replace() 方法没有任何 return 类型,这就是为什么当您转储 $request->request->replace($data) 时您得到 null 作为输出。

如果您想在请求中添加一些额外的参数,那么 replace() 不是正确的选择,您应该在 ParameterBag 中使用 set() 方法。