middlewares / aura-router
用于Aura.Router的中间件
v2.0.1
2020-12-02 00:05 UTC
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
用于使用 Aura.Router 并将路由处理程序存储在请求属性中的中间件。
需求
- PHP >= 7.2
- 一个 PSR-7 http 库
- 一个 PSR-15 中间件分发器
安装
此软件包可以通过 Composer 以 middlewares/aura-router 的形式安装和自动加载。
composer require middlewares/aura-router
示例
在这个示例中,我们使用 middleware/request-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 允许将任何内容定义为路由处理程序(闭包、回调、操作对象、控制器类等)。中间件会将此处理程序存储在请求属性中。
用法
使用 Aura\Router\RouterContainer
实例创建中间件
$routerContainer = new Aura\Router\RouterContainer(); $route = new Middlewares\AuraRouter($routerContainer);
可选地,您可以将 Psr\Http\Message\ResponseFactoryInterface
作为第二个参数提供,它将用于创建错误响应(404
、405
或 406
)。如果没有定义,将自动使用 Middleware\Utils\Factory。
$routerContainer = new Aura\Router\RouterContainer(); $responseFactory = new MyOwnResponseFactory(); $route = new Middlewares\AuraRouter($routerContainer, $responseFactory);
属性
用于保存处理程序的服务器请求属性名称。默认值是 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') ]);
有关最近更改的更多信息,请参阅 CHANGELOG,有关贡献的详细信息,请参阅 CONTRIBUTING。
MIT 许可证 (MIT)。有关更多信息,请参阅 LICENSE。