tleckie/router
Composer 安装命令:
composer require tleckie/router
包简介
Simple and fast router PSR-7, PSR-17, PSR-15
README 文档
README
Router:
Simple and fast router PSR-7, PSR-17, PSR-15
Installation
You can install the package via composer:
composer require tleckie/router
Usage
<?php use HttpSoft\Emitter\SapiEmitter; use HttpSoft\Message\ResponseFactory; use HttpSoft\Message\ServerRequestFactory; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use Tleckie\Router\Router; $router = new Router( new ServerRequestFactory(), new ResponseFactory(), new SapiEmitter() ); /** * Class UserController * * @author Teodoro Leckie Westberg <teodoroleckie@gmail.com> */ class UserController { /** * @param ServerRequestInterface $request * @param ResponseInterface $response * @param array $params * @return ResponseInterface */ public function retrieveUserAction(ServerRequestInterface $request, ResponseInterface $response, array $params): ResponseInterface { $response->getBody()->write(sprintf(" CONTROLLER USER ID: %s", $params['id'])); return $response->withHeader('Content-Type', 'text/html'); } } // routing with middleware $router->get('/user/(?<id>[0-9]+)/', static function (ServerRequestInterface $request, RequestHandlerInterface $handler, array $params) { $response = $handler->handle($request); $response->getBody()->write(sprintf(' (ROUTES MIDDLEWARE ID: #%s) ', $params['id'])); return $response; }, [new UserController, 'retrieveUserAction'] );
Add global middleware
The middleware added in the add method is always executed.
<?php require_once "vendor/autoload.php"; use HttpSoft\Emitter\SapiEmitter; use HttpSoft\Message\ResponseFactory; use HttpSoft\Message\ServerRequestFactory; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; use Tleckie\Router\Router; $router = new Router( new ServerRequestFactory(), new ResponseFactory(), new SapiEmitter() ); /** * Class ExampleMiddleware * @author Teodoro Leckie Westberg <teodoroleckie@gmail.com> */ class ExampleMiddleware implements MiddlewareInterface { /** * <strong>Objects that implement MiddlewareInterface will not receive routing parameters</strong> * @param ServerRequestInterface $request * @param RequestHandlerInterface $handler * @return ResponseInterface */ public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { $response = $handler->handle($request); $response->getBody()->write(' (GLOBAL 1)'); return $response; } } // Add app closure middleware. The closure middleware will receive the routing parameters $router->add(static function (ServerRequestInterface $request, RequestHandlerInterface $handler, array $params){ $response = $handler->handle($request); $response->getBody()->write(sprintf(' (GLOBAL ID: %s)', $params['id'])); return $response; }); // app middleware. $router->add(new ExampleMiddleware());
Support for all methods.
<?php require_once "vendor/autoload.php"; use HttpSoft\Emitter\SapiEmitter; use HttpSoft\Message\ResponseFactory; use HttpSoft\Message\ServerRequestFactory; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use Tleckie\Router\Router; $router = new Router( new ServerRequestFactory(), new ResponseFactory(), new SapiEmitter() ); $router->all('/user/(?<id>[0-9]+)/', static function (ServerRequestInterface $request, RequestHandlerInterface $handler, array $params) { $response = $handler->handle($request); $response->getBody()->write(' (ROUTES MIDDLEWARE #1#)' . $params['id']); return $response; }, static function (ServerRequestInterface $request, RequestHandlerInterface $handler, array $params) { $response = $handler->handle($request); $response->getBody()->write(' (ROUTES MIDDLEWARE #2#)' . $params['id']); return $response; }, [new UserController, 'retrieveUserAction'] );
<?php require_once "vendor/autoload.php"; use HttpSoft\Emitter\SapiEmitter; use HttpSoft\Message\ResponseFactory; use HttpSoft\Message\ServerRequestFactory; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use Tleckie\Router\Exception\RouteNotFoundException; use Tleckie\Router\Router; $router = new Router( new ServerRequestFactory(), new ResponseFactory(), new SapiEmitter() ); $router->post('/user/(?<id>[0-9]+)/', static function (ServerRequestInterface $request, RequestHandlerInterface $handler, array $params) { $response = $handler->handle($request); $response->getBody()->write(' (ROUTES MIDDLEWARE #1#)' . $params['id']); return $response; }, static function (ServerRequestInterface $request, RequestHandlerInterface $handler, array $params) { $response = $handler->handle($request); $response->getBody()->write(' (ROUTES MIDDLEWARE #2#)' . $params['id']); return $response; }, [new UserController, 'retrieveUserAction'] ); try { $router->run( $_SERVER['REQUEST_METHOD'], $_SERVER['REDIRECT_URL'] ?? '/' ); } catch (RouteNotFoundException $exception) { // handle 404 }
Methods:
GET, POST, HEAD, PATCH, OPTIONS, DELETE, PUT,
统计信息
- 总下载量: 5
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-04-21