nekoos/lumen-response-trick

用可配置的接口替换 lumen 响应外观

1.0.0 2019-09-05 16:04 UTC

This package is auto-updated.

Last update: 2024-09-06 03:03:51 UTC


README

这个库为替换 Lumen 默认使用的类提供了一个替代方案

  • Illuminate\Http\Response
  • Illuminate\Http\JsonResponse;
  • Symfony\Component\HttpFoundation\BinaryFileResponse;
  • Symfony\Component\HttpFoundation\StreamedResponse;

安装

composer require nekoos/lumen-response-trick

用法

基本用法

假设你已经创建了一个用于通用响应的自定义类

use Illuminate\Http\Response;

class MyOverrideResponse extends Response { ... }

以及一个用于 JSON 响应的类

use Illuminate\Http\JsonResponse;

class MyOverrideJsonResponse extends Response { ... }

现在你可以将这些行添加到你的初始化加载文件中

# path: bootstrap/app

use NekoOs\Override\Laravel\Lumen\Http\ResponseFactory;

ResponseFactory::use(MyOverrideResponse::class);
ResponseFactory::use(MyOverrideJsonResponse::class);

这是预期的结果

response('common messaje')              # return instance of MyOverrideResponse
response()->json('common messaje')      # return instance of MyOverrideJsonResponse

定制用法

你甚至可以根据特定条件使用响应实例

# path: bootstrap/app

use NekoOs\Override\Laravel\Lumen\Http\ResponseFactory;

ResponseFactory::use(function (...$arguments) { ... }, Illuminate\Http\Response);

甚至可以注册一个服务提供者

# path: app/Providers/MyResponseServiceProvider.php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Laravel\Lumen\Http\ResponseFactory;
use MyOverrideResponse;

class MyResponseServiceProvider extends ServiceProvider
{
    /**
     * register()
     */
    public function register()
    {
        $view = $this->app->make('view');
        $this->app->singleton(ResponseFactory::class, function () use ($view) {
            return new MyOverrideResponse($view);
        });
    }
}