PHP中如何创建新Request实例并将自定义数组传入接收Request的方法
解决方案
你可以通过以下两种主流方式基于数组创建Request实例,适配Laravel框架的Illuminate\Http\Request类型要求:
方式1:直接实例化(适合仅需要获取参数的场景)
直接把数组作为参数传入Request的构造函数即可,调用all()、input()等参数获取方法完全不受影响:
public function someMethod(){ $array = [...]; // 生成Request实例 $request = new \Illuminate\Http\Request($array); return $this->createUser($request); }
方式2:用create方法模拟真实请求(适合用到请求属性判断的场景)
如果你的createUser方法里会判断请求方法、请求路径等属性,可以用create静态方法生成完全贴合真实HTTP请求特征的Request实例:
public function someMethod(){ $array = [...]; // 参数依次为:自定义请求URI、请求方法、传入的参数数组 $request = \Illuminate\Http\Request::create('/dummy-path', 'POST', $array); return $this->createUser($request); }
注意事项
- 如果你使用的是Symfony框架,
Symfony\Component\HttpFoundation\Request的创建方式和上述完全一致,二者是继承关系。 - 不需要额外处理其他参数的情况下,优先选择方式1实现更简洁。
内容的提问来源于stack exchange,提问作者Ramiz Kongulov
相关产品推荐
相关产品推荐

