随便找个地方写个扩展类
我的是在 App\Service;下面写的
<?php
/**
* Request 的扩展
* User: 李明
* Date: 2021-12-9
* Time: 11:39
*/
namespace App\Service;
class ApiRequest
{
/**
* 获取请求的数据
* @return \Closure
*/
public function more()
{
/**
* @param array $params
* @param bool $suffix 是否用索引数组格式
* @return array
*/
return function (array $params, bool $suffix = false): array {
$p = [];
$i = 0;
foreach ($params as $param) {
if (!is_array($param)) {
$p[$suffix == true ? $i++ : $param] = $this->input($param);
} else {
if (!isset($param[1])) $param[1] = null;
if (!isset($param[2])) $param[2] = '';
if (is_array($param[0])) {
$name = is_array($param[1]) ? $param[0][0] . '/a' : $param[0][0] . '/' . $param[0][1];
$keyName = $param[0][0];
} else {
$name = is_array($param[1]) ? $param[0] . '/a' : $param[0];
$keyName = $param[0];
}
$p[$suffix == true ? $i++ : (isset($param[3]) ? $param[3] : $keyName)] = $this->input($name, $param[1], $param[2]);
}
}
return $p;
};
}
/**
* 获取get参数
* @return \Closure
*/
public function getMore()
{
return function (array $params, bool $suffix = false): array {
return $this->more($params, $suffix);
};
}
/**
* 获取post参数
* @return \Closure
*/
public function postMore()
{
return function (array $params, bool $suffix = false): array {
return $this->more($params, $suffix);
};
}
/**
* 获取用户访问端
* @return array|string|null
*/
public function getFromType()
{
return function () {
return $this->header('Form-type', '');
};
}
/**
* 当前访问端
* @return \Closure
*/
public function isTerminal()
{
return function (string $terminal) {
return strtolower($this->getFromType()) === $terminal;
};
}
/**
* 是否是H5端
* @return \Closure
*/
public function isH5()
{
return function () {
return $this->isTerminal('h5');
};
}
/**
* 是否是微信端
* @return \Closure
*/
public function isWechat()
{
return function () {
return $this->isTerminal('wechat');
};
}
/**
* 是否是小程序端
* @return \Closure
*/
public function isRoutine()
{
return function () {
return $this->isTerminal('routine');
};
}
/**
* 是否是app端
* @return \Closure
*/
public function isApp()
{
return function () {
return $this->isTerminal('app');
};
}
/**
* 是否是app端
* @return \Closure
*/
public function isPc()
{
return function () {
return $this->isTerminal('pc');
};
}
}
2,找到App\Providers,中的AppServiceProvider 文件 ,在boot中注入
public function boot()
{
/**
* 扩展 Request 方法
*/
Request::mixin(new ApiRequest());
}
直接在controller使用
public function test(Request $request){
$data = $request->getMore([
['id', ''],
['ddd', ''],
]);
dd($data);
}