路由分析
自动路由
先自己写一个路由
尝试用thinkphp的默认路由方式,访问成功访问
找到Router.php的handle函数,下断点开始调试
先进行一次url解码,然后检查我们的路由,我们跟进去看看它是怎么检测我们的路由是否存在且合理的
这里先获取已经有的路由,这里有三个
三个都不是,直接返回false
checkRoutes返回false,判断是否应该自动导入路由,直接为true
用/把我们的控制器、方法、参数分开,有点像thinkphp的处理方法,并把控制器名的首字母大写
后面两个同理
把我们的类文件包含进来,并得到控制器的类名
返回到tryToRouteIt方法,没有启用多个过滤器,所以返回单个过滤器
返回到handleRequest,过滤器为空,通过run得到uri可能的响应
然后我们开始Controller
这里主要就判断了我们的Controller是否存在和方法是否以_开头
runController
最后调用$class->{$this->method}(...$params);得到响应
根据官方文档,从4.2以后默认关闭了自动路由
同时控制器名只有第一个字母可以大写,我这里可以访问到应该是本地环境的原因
定义路由
路由的配置写在Config目录下的Routes.php里
我也自己写一个路由的配置
成功访问感觉越来越多php的cms框架为了安全会要求自定义路由,而不会让你随意访问