6.1.2.自定义解析器

自定义解析器

fast-route路由解析器

解析器类

use \qing\routers\FastRouteParser;

加载fast-route包

composer 方式

//composer.json 依赖fast-route包 "require": { "nikic/fast-route": "dev-master" }

qingmvc方式

` //main.php主配置文件

//载入FastRoute的函数库文件 require_once '...\FastRoute\src\functions.php';

//载入FastRoute命名空间自动加载 'namespaces' => [ 'FastRoute'=>'...\FastRoute\src'
] `

组件配置

修改路由器使用系统默认的组件创建器

//路由器
'router'=>
[
    'creator'=>'\qing\routers\FastRouteCreator'
],

路由配置

配置目录

- (应用目录)
    - config(配置目录)
        - main.php(主配置文件)
        - routes.fast.php(路由配置文件)
        - routes.fast.cache.php(路由缓存文件)

默认情况下

添加路由方式

使用对象$r的addRoute方法

/*@var $r \FastRoute\RouteCollector */
$r->addRoute('请求方式', '路由正则',{路由处理器})

路由配置文件

//routes.fast.php
<?php
//该文件作用域有变量$r可以使用,那是\FastRoute\RouteCollector实例
/*@var $r \FastRoute\RouteCollector */

$r->addRoute('POST', 'post', 'post');
$r->addRoute('GET', 'users', 'users/index');
$r->addRoute('GET', 'login', ['login','index']);

$r->addRoute('GET', 'user/{name}/{id:[0-9]+}', ['u','login','index']);
$r->addRoute('GET', 'user/{id:[0-9]+}', 'u/users/index');
$r->addRoute('GET', 'user/{name}', 'admin/index/index');

对应的路由url

index.php/post

index.php/users
index.php/login

index.php/user/xiaowang/123
index.php/user/123

index.php/user/xiaowang