非资源路由执行check
文件:thinkphp/library/think/route/RuleItem.php 行号231 此处就是非资源路由执行的方法。
进到检测路由规则方法后,还是会合并路由参数。
关于合并路由参数的方法,在上边已经说过了, 在这里就不多说了。
直到这里关于检测路由下的合并分组参数和检查分组路由就说完了,思路不清晰的可以看思维导图。
二、检测URL变量和规则路由是否匹配
以下案例使用的正常路由,没有使用资源路由做的案例,走的是文件thinkphp/library/think/route/RuleItem.php
使用神器来打印一下数据。
以上就是全部的执行过程,接下来就需要解析检测URL和规则路由是否匹配的内容。
在开始这里的内容之前先跟咔咔一起来解决一个问题。
来到上图代码的上层进行打印一下返回结果。
然后在来看一下路由配置文件route.php。
在这个文件中咔咔只配置了俩个路由地址,只有一个是资源路由,并且设置有变量规则。
此时在给路由配置文件在加上一条路由地址。
接着在文章开头的位置进行打印结果。
这里有没有一个疑问,就是为什么会返回false呢!
解决为什么检测URL和规则路由是否匹配会返回false
那就需要来到源点进行查看了。
这块的内容咔咔在上文已经解释完了,这里的item会存在俩种情况,第一种为执行think\route\Resource Object,第二种为执行think\route\RuleItem Object。
都会去执行check的那个方法。
很清晰的就是会知道肯定是在执行文件thinkphp/library/think/route/RuleItem.php中的check给予返回的。
根据这俩行代码就能明白肯定就是$match这个变量有关系。
这个变量是执行的检测URL和规则路由是否匹配方法,这又回到开始的咱们说的内容了。
所以说源码就是这样一环套一环,慢慢看就行了,看的多了就会融会贯通了。
正式开始解析代码
参数说明
- $url : 访问地址
- $option : 合并分组参数
- $completeMatch : 路由是否完全匹配
执行文件:文件:thinkphp/library/think/route/RuleItem.php