spinyman / lumen-route-param-to-object-middleware
Lumen middleware to use Route parameters as objects
v1.0.5
2021-11-08 06:42 UTC
Requires
- php: >=7.2.5
- laravel/lumen-framework: ^7.0|^8.0
Requires (Dev)
- guzzlehttp/guzzle: ^6.0
- phpunit/phpunit: ^8.0|^9.0
README
Lumen middleware to use Route parameters as objects (like Laravel does)
This is a route middleware.
Installation:
composer require spinyman/lumen-route-param-to-object-middleware
- Register middleware in
./bootstrap/app.php
:$app->routeMiddleware( [ 'param2object' => \SpinyMan\LumenRouteParamToObject\Middleware\RouteParamToObject::class, ] );
- Add it to any group route (ex.: RouteServiceProvider):
$this->router->group( [ 'middleware' => 'param2object', ], static function (\Laravel\Lumen\Routing\Router $router) { // your code goes here } );
Examples
Eloquent:
//router $this->router->group( [ 'middleware' => 'param2object', ], static function (\Laravel\Lumen\Routing\Router $router) { $this->router->get( '/books/{book}', 'BookController@show' ); } )
class Book extends \Illuminate\Database\Eloquent\Model { protected $table = 'books'; }
class BookController extends \Laravel\Lumen\Routing\Controller { public function show(\Laravel\Lumen\Http\Request $request, Book $book) { $bookId = $book->getKey(); // your code goes here } }
Simple class:
//router $this->router->group( [ 'middleware' => 'param2object', ], static function (\Laravel\Lumen\Routing\Router $router) { $this->router->get( '/namer/{namer}', 'NamerController@run' ); } )
// Namer class class Namer { private $name; public function __construct(string $name) { $this->name = $name; } public function getName(): string { return ucfirst( strtolower($this->name) ); } }
class NamerController extends \Laravel\Lumen\Routing\Controller { public function run(\Laravel\Lumen\Http\Request $request, Namer $namer) { return $namer->getName(); } }