middlewares/aura-router
最新稳定版本:v2.2.1
Composer 安装命令:
composer require middlewares/aura-router
包简介
Middleware to use Aura.Router
README 文档
README
Middleware to use Aura.Router with a few more extras.
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 mapped to attributes $name = $request->getAttribute('name'); // You can echo the output (it will be captured and wrote 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(); $map = $router->getMap(); $map->get('list', '/users', 'listUsers')->extras( 'key' => 'value' ]); $optionalResponseFactory = new MyOwnResponseFactory(); $middleware = new Middlewares\AuraRouter($routerContainer, $optionalResponseFactory); $dispatcher = new Dispatcher([ // Hold the resolved route handler reference in an attribute called "handler" // (default: request-handler) $middleware->handlerAttribute('handler'), // Hold Aura's resolved route instance in an attribute called "aura-route" // (default: route) $middleware->routeAttribute('aura-route'), // Execute the route handler (new Middlewares\RequestHandler())->handlerAttribute('handler') ]); // then, inside our Request Handler or Middleware public function process( ServerRequestInterface $request, RequestHandlerInterface $handler ): ResponseInterface { /** @var string $handler this returns 'listUsers' */ $handler = $request->getAttribute('handler'); /** @var Route $route this returns the resolved Route instance */ $route = $request->getAttribute('aura-route'); // example to retrieve the previously set extra key/value "value" $route->extras['key']; // example to retrieve the route name "list" $route->name; }
Please see CHANGELOG for more information about recent changes and CONTRIBUTING for contributing details.
The MIT License (MIT). Please see LICENSE for more information.
统计信息
- 总下载量: 10.76k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 10
- 点击次数: 0
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-10-02