alexpts / php-routing
与PSR-7兼容的简单路由器
1.0.0
2017-09-05 18:28 UTC
Requires
- php: >=7.1
- alexpts/php-tools: ^3.0
- psr/http-message: ^1.0.1
Requires (Dev)
- phpunit/phpunit: ^6.2
- zendframework/zend-diactoros: ^1.5
This package is auto-updated.
Last update: 2024-09-15 02:01:09 UTC
README
支持PSR-7和中间件级别的简单路由器。
功能
- 简单捕获URL参数
- 使用RegExp描述路由
- 灵活的参数捕获分组
- 路由优先级
- 路由级别的中间件
- 高速性能
- 指定默认路由
- 适用于REST的适配
简单路由
use PTS\Routing\Route; use PTS\Routing\CollectionRoute; use PTS\Routing\Matcher; use PTS\Routing\RouteService; use Psr\Http\Message\RequestInterface; $route = new Route('/', function() { return ['response' => 'data']; }); $collection = new CollectionRoute(); $collection->add('main', $route); $matcher = new Matcher(new RouteService()); $activeRoute = $matcher->match($collection, '/')->current(); $response = $activeRoute($request); // PSR-7 request
捕获URL参数
捕获的参数可以作为参数传递给处理器。以字符 _
开头的参数将被忽略。它们用于技术需求。
use PTS\Routing\Route; use PTS\Routing\CollectionRoute; use PTS\Routing\Matcher; use PTS\Routing\RouteService; use Psr\Http\Message\RequestInterface; $route = new Route('/users/{userId}/', function($userId) { return $userId; }); $route->pushMiddleware(new CallWithMatchParams); $collection = new CollectionRoute(); $collection->add('user', $route); $matcher = new Matcher(new RouteService()); $activeRoute = $matcher->match($collection, '/users/4/')->current();