CHHHCHHOH 's BLOG

codeigniter 分析

路由分析

自动路由

先自己写一个路由


尝试用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框架为了安全会要求自定义路由,而不会让你随意访问

添加新评论