alexpts/php-psr15-routing
Composer 安装命令:
composer require alexpts/php-psr15-routing
包简介
Middleware routing compatible with the PSR-7 and PSR-15
README 文档
README
Install
composer require alexpts/php-psr15-routing
Простой роутер с поддержкой PSR-7, PSR-15
Возможности
- Простой захват параметров из url
- Использование RegExp для описания роута
- Гибкие группировки для захвата параметров
- Приоритеты роутов
- Высокая скорость работы
Example
use PTS\PSR15Routing\CallableAdapter; use PTS\PSR15Routing\Router; use PTS\PSR15Routing\Route; use PTS\PSR15Routing\RouterMiddleware; $router = new Router; $router->add('/', new Route('/', new CallableAdapter(function($request) { return $response; // $response must be ResponseInterface }))); $handler = ...; // $handler bust be RequestHandlerInterface $router->add('/admin', new Route('/', $handler)); // with priority $router->add('/admin/1', new Route('/', $handler), 100); // some middleware manager/runner $app = (new MiddlewareManager) ->push(new RouterMiddleware($router); $response = $app->handler($request);
EndPoint (bonus)
EndPoint is wrapper for real handler route. It need for flex config real handler and get real handler from runtime.
use PTS\PSR15Routing\CallableAdapter; use PTS\PSR15Routing\Router; use PTS\PSR15Routing\Route; use PTS\PSR15Routing\RouterMiddleware; use PTS\EndPoint\DynamicPoint; use PTS\EndPoint\EndPoint; $router = new Router; $flexHandler = new DynamicPoint([ 'prefix' => '\\Namespace\\ForDynamicController\\' ]); $router->add('flex', new Route('/{_controller}/{_action}/', $flexHandler)); // /blog/get/ => \\Namespace\\ForDynamicController\\Blog::get() $mainPageHandler = new EndPoint(['controller' => SomeController::class]); $router->add('mainPage', new Route('/', $mainPageHandler)); // SomeController::index() // with params from url $postHandler = new DynamicPoint([ 'controller' => '\\Project\\PostController', ]); $router->add('posts', new Route('/posts/{_action}/{id}/', $postHandler)); // /posts/get/4/ => PostController::get($id = 4)
统计信息
- 总下载量: 47
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-03-25