我一直在Request
类上使用merge()
和replace()
方法。它大部分时间都在工作,但我的印象是merge()
会添加或覆盖现有参数,而replace()
会清除所有参数并添加传入的新参数数组。但是,它们都按照我想象merge()
的工作方式工作。我在这里错过了什么吗?
另外,有没有办法merge()
或replace()
文件,同时仍然使用hasFile()
方法?基本上,我正在做的是调整来自 API 调用的请求。因此,我将请求中的文件作为一个参数接收,并将其重新映射到另一个参数名称,使其与后端的期望相匹配。使用任一方法后,当我执行dd($request->all())
时,请求一目了然,但hasfile()
返回 false。
我确实对Http'Illuminate'Request
类进行了一些深入研究,我想我发现问题是我的文件没有被设置为$_FILES
。所以我想它确实按预期工作。
话虽如此,我有没有特别的方法可以完成我想做的事情?
回答问题的第一部分:
我直接去了源头,确认功能确实不同:
合并调用使用 array_replace (php.net( 的 add 函数:
public function add(array $parameters = array())
{
$this->parameters = array_replace($this->parameters, $parameters);
}
而
替换只是替换整个变量(数组(
public function replace(array $parameters = array())
{
$this->parameters = $parameters;
}
所以你的第一印象实际上是正确的。