阅读(199) (12)

Laravel 8 响应宏

2021-06-24 14:19:48 更新

如果你想要定义一个自定义的可以在多个路由和控制器中复用的响应,可以使用 Response 门面上的 macro 方法。例如,在某个 服务提供者boot 方法编写如下代码:

<?php

namespace AppProviders;

use IlluminateSupportFacadesResponse;
use IlluminateSupportServiceProvider;

class ResponseMacroServiceProvider extends ServiceProvider
{
    /**
     * 注册响应宏
     *
     * @return void
     */
    public function boot()
    {
        Response::macro('caps', function ($value) {
            return Response::make(strtoupper($value));
        });
    }
}

macro 方法接受一个名称作为第一个参数,闭包函数作为的第二个参数。响应宏的闭包在 ResponseFactory 实现类或辅助函数 response 中调用宏名称的时候被执行:

return response()->caps('foo');