执行流程 * 注册路由(可以理解为开启路由功能) ~~~ // 开启路由功能 'url_route_on' => true, ~~~ * 配置路由(你使用路由功能当然要配置路由) ~~~ // 开启路由功能 'url_route_on' => true, // 设置路由配置文件列表 'route_config_file' => ['home','admin'], ~~~ application/home.php配置home模块的路由规则,application/admin.php则配置admin模块的路由规则 * 注册方法 | | | | --- | --- | | 方法名 | 描述 | |rule |基本路由注册| |any |任意请求路由注册| |get |GET请求路由注册| |post |POST请求路由注册| |put |PUT请求路由注册| |patch |PATCH请求路由注册| |delete |DELETE请求路由注册| |alias| 别名路由注册| |group| 路由分组注册| |controller| 控制器方法路由注册| |resource| 资源路由注册| |pattern| 全局路由变量规则注册| |import |静态注册路由(导入路由配置)| |domain| 域名路由注册或者域名绑定| |miss| MISS路由注册| |auto| AUTO路由注册| ~~~ use think\Route; Route::get('/','index/index/index'); ~~~ * 路由缓存(避免重复请求路由,所以需要进行路由缓存) ~~~ php think optimize:route ~~~ * 参数检查() 1. 路由检查: 路由检查指的是把当前的请求URL地址依次和注册的路由规则进行变量和条件检查,如果不匹配则进行下一个路由规则的检查,直到匹配到正确的路由规则则进入下一步:路由解析。如果没有匹配到任何路由规则,则按照系统默认的规则进行URL解析 2. 路由参数检查: 路由变量检查,其实也就是通常说的路由规则匹配检查,当路由参数(路由生效条件)检测通过后,就要对当前访问的URL地址进行路由规则匹配检查,包括路由变量个数、变量规则约束,如果是静态路由规则的话就进行字符串匹配(不区分大小写)。 3. 路由别名检查: 路由别名允许我们给控制器注册一个唯一的路由标识,然后该控制器下面的所有操作方法都不需要再定义具体的路由,这个路由标识就称为别名路由 4. 域名部署检测 接下来会检查是否配置了域名部署,如果有匹配当前的域名,会检查域名是否定义相关的路由绑定。 域名部署检测由Route类的checkDomain方法完成,具体用法我们会在(十)域名路由一节为你讲解。 5. 路由绑定检查 在这个步骤,系统会检查当前的是否有进行路由绑定,如果有绑定的话按照绑定类型进行解析。具体内容会在(十一)路由绑定中为你讲解。 6. 静态路由检查 系统会优先检查是否存在和当前访问URL地址相同的静态路由(注意是完整匹配,不含URL后缀),如果有定义,则进行静态路由的参数检查,如果通过表示路由有效,则进行路由地址解析。 也就是说静态路由规则虽然和动态路由是使用相同的方式一起注册的,但检查的时候是提前检查的。 7. 路由解析 路由解析的主要工作就是解析匹配到的路由规则中定义的路由地址(例如控制器的操作方法或者闭包等),并且解析URL地址中的其它路由参数以及路由绑定的其它数据,而且会把相关信息和变量保存到当前请求对象中,最后会告诉系统下一步如何对URL请求进行正确的调度执行,这个时候路由的使命全部完成,正式交权给App类。 路由的解析操作由Route类的parseRule方法完成。