middlewares / aura-router
Middleware to use Aura.Router
Installs: 9 953
Dependents: 3
Suggesters: 0
Security: 0
Stars: 9
Watchers: 2
Forks: 2
Open Issues: 2
Requires
- php: ^7.2 || ^8.0
- aura/router: ^3.0
- middlewares/utils: ^3.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- laminas/laminas-diactoros: ^2.3
- nyholm/psr7: ^1.2
- oscarotero/php-cs-fixer-config: ^1.0
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^8|^9
- squizlabs/php_codesniffer: ^3.0
README
Middleware to use Aura.Router and store the route handler in a request attribute.
Requirements
- PHP >= 7.2
- A PSR-7 http library
- A PSR-15 middleware dispatcher
Installation
This package is installable and autoloadable via Composer as middlewares/aura-router.
composer require middlewares/aura-router
Example
In this example, we are using middleware/request-handler to execute the route handler:
//Create the router $router = new Aura\Router\RouterContainer(); $map = $router->getMap(); $map->get('hello', '/hello/{name}', function ($request) { //The route parameters are stored as attributes $name = $request->getAttribute('name'); //You can echo the output (it will be captured and writted into the body) echo sprintf('Hello %s', $name); //Or return a string return sprintf('Hello %s', $name); //Or return a response return new Response(); }); $dispatcher = new Dispatcher([ new Middlewares\AuraRouter($router), new Middlewares\RequestHandler() ]); $response = $dispatcher->dispatch(new ServerRequest('/hello/world'));
Aura.Router allows to define anything as the router handler (a closure, callback, action object, controller class, etc). The middleware will store this handler in a request attribute.
Usage
Create the middleware with a Aura\Router\RouterContainer
instance:
$routerContainer = new Aura\Router\RouterContainer(); $route = new Middlewares\AuraRouter($routerContainer);
Optionally, you can provide a Psr\Http\Message\ResponseFactoryInterface
as the second argument, that will be used to create the error responses (404
, 405
or 406
). If it's not defined, Middleware\Utils\Factory will be used to detect it automatically.
$routerContainer = new Aura\Router\RouterContainer(); $responseFactory = new MyOwnResponseFactory(); $route = new Middlewares\AuraRouter($routerContainer, $responseFactory);
attribute
The name of the server request attribute used to save the handler. The default value is request-handler
.
$dispatcher = new Dispatcher([ //Save the route handler in an attribute called "route" (new Middlewares\AuraRouter($routerContainer))->attribute('route'), //Execute the route handler (new Middlewares\RequestHandler())->attribute('route') ]);
Please see CHANGELOG for more information about recent changes and CONTRIBUTING for contributing details.
The MIT License (MIT). Please see LICENSE for more information.