alexpts/php-routing

与PSR-7兼容的简单路由器

1.0.0 2017-09-05 18:28 UTC

This package is auto-updated.

Last update: 2024-09-15 02:01:09 UTC


README

SensioLabsInsight

Build Status Code Coverage Code Climate Scrutinizer Code Quality

支持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();