esase / tiny-router

适用于HTTP和控制台应用的灵活路由系统组件

v1.0.5 2020-09-10 05:36 UTC

README

Build Status Coverage Status

Tiny/Routing - 它是介于外部世界(如浏览器或控制台命令CLI)和您的应用程序之间的一个层。该软件包可以集成到任何现有的php项目中,且不需要任何额外的包。

通常路由包含两个主要部分

  1. 路由 - 描述元信息,如 - 一个查询、查询类型和负责处理所有传入请求的控制器

  2. 路由器 - 仅保存已注册的路由,并将传入请求与已注册的路由匹配。
    因此,它要么返回一个匹配的路由,要么在找不到路由时触发一个异常

当前的路由实现非常简单,但同时又非常强大。它允许您使用纯请求(字面量)和基于正则表达式的请求与之交互,同时它还支持通过HTTP请求类型(如:GETPOST等)过滤请求。
您还可以将其用作CLI项目的路由。

那么,让我们看一下HTTP路由的例子

    // create an instance of the router
    $router = new Router(new RequestHttpParams($_SERVER));

    // a literal `home` route
    $router->registerRoute(new Route(
        '/',
        'HomeController',
        'index'
    ));

    // a literal `users` route which accepts only `GET` and `POST` requests
    $router->registerRoute(new Route(
        '/users',
        'UserController',
        // list of actions
        [ 
            'GET' => 'list',
            'POST' => 'create'
        ]
    ));

    // a more complex example using a `RegExp` rule
    $router->registerRoute(new Route(
        '|^/users/(?P<id>\d+)$|i', // it's matches to: `/users/1`, `/users/300`, etc
        'UserController',
        [
            'GET' => 'view', 
            'DELETE' => 'delete',
        ],
        'regexp', 
        ['id']
    ));

    // now get a matched route 
    $matchedRoutes = $router->getMatchedRoute();

安装

运行以下命令安装此库

$ composer require esase/tiny-router

文档

https://tiny-docs.readthedocs.io/en/latest/tiny-router/docs/index.html