NekoOs / lumen-response-trick by NekoOs

Replace the lumen response facade with configurable interface
9
0
2
Package Data
Maintainer Username: NekoOs
Maintainer Contact: neafand@gmail.com (Neder Alfonso Fandiño Andrade)
Package Create Date: 2019-09-05
Package Last Update: 2019-09-05
Language: PHP
License: MIT
Last Refreshed: 2025-02-06 15:03:36
Package Statistics
Total Downloads: 9
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 0
Total Watchers: 2
Total Forks: 0
Total Open Issues: 0

Lumen Response Customized

This library presents an alternative for replacing the default classes used by Lumen

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

Installation

composer require nekoos/lumen-response-trick

Usage

Basic use

Suppose you have created a custom class for common responses

use Illuminate\Http\Response;

class MyOverrideResponse extends Response { ... }

and one for the json answers

use Illuminate\Http\JsonResponse;

class MyOverrideJsonResponse extends Response { ... }

Now you can add these lines to your initial load file

# path: bootstrap/app

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

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

This are expected results

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

Customized use

You could even use response instances according to specific conditions

# path: bootstrap/app

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

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

or even register a service provider

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