2022-01-14 Laravel 利用 macro 方法来扩展Request

随便找个地方写个扩展类
我的是在 App\Service;下面写的

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);
    }

你可能感兴趣的:(2022-01-14 Laravel 利用 macro 方法来扩展Request)