路由分析

自动路由

先自己写一个路由
2024-07-22T06:35:55.png
尝试用thinkphp的默认路由方式,访问成功访问
2024-07-22T06:47:15.png
找到Router.php的handle函数,下断点开始调试
2024-07-22T06:48:20.png
先进行一次url解码,然后检查我们的路由,我们跟进去看看它是怎么检测我们的路由是否存在且合理的
2024-07-22T06:50:22.png
这里先获取已经有的路由,这里有三个
2024-07-22T06:52:07.png
三个都不是,直接返回false
2024-07-22T06:53:28.png
checkRoutes返回false,判断是否应该自动导入路由,直接为true
2024-07-22T06:54:29.png
用/把我们的控制器、方法、参数分开,有点像thinkphp的处理方法,并把控制器名的首字母大写
2024-07-22T06:57:14.png
后面两个同理
2024-07-22T06:59:46.png
把我们的类文件包含进来,并得到控制器的类名
2024-07-22T07:05:16.png
返回到tryToRouteIt方法,没有启用多个过滤器,所以返回单个过滤器
2024-07-22T07:09:16.png
返回到handleRequest,过滤器为空,通过run得到uri可能的响应
2024-07-22T07:17:12.png
然后我们开始Controller
2024-07-22T07:21:59.png
这里主要就判断了我们的Controller是否存在和方法是否以_开头
2024-07-22T07:23:46.png
runController
2024-07-22T07:25:57.png
最后调用$class->{$this->method}(...$params);得到响应
2024-07-22T07:30:48.png
根据官方文档,从4.2以后默认关闭了自动路由
2024-07-22T07:57:54.png
同时控制器名只有第一个字母可以大写,我这里可以访问到应该是本地环境的原因
2024-07-22T07:59:02.png

定义路由

路由的配置写在Config目录下的Routes.php里
2024-07-22T07:44:49.png
我也自己写一个路由的配置
2024-07-22T08:04:36.png
成功访问
2024-07-22T08:04:58.png
感觉越来越多php的cms框架为了安全会要求自定义路由,而不会让你随意访问