1.首先代码就会执行这部分
从一开始就进行了一个简单的判断$,那么这个是从哪里过来的呢!
在文件thinkphp/library/think/route/RuleGroup.php这里就对$进行了处理。
所以说在什么情况下会执行预处理的第一部分呢!
我们来看一下简单的案例。
然后在路由预处理中进行打印,就会发现打印结果后边会多一个$符号。
substr介绍
这里对substr进行简单的说明一下,碰到每一个知识点都简单的回顾一下。
这个方法用来字符串截取。
参数一:需要截取的字符串
参数二:从什么位置开始截取,正数从左往右,负数结尾开始,0 - 在字符串中的第一个字符处开始
参数三:长度,正数从参数二进行返回,负数从末端进行返回。
所以说最终这块代码的执行会把$这个符号取消掉,只留为/,打印结果如下图。
接着就是对路由预处理的下半部分进行解析。
先进行一次移除左侧所有的斜杠的处理。
在接下来的$this->parent大家有有没有一点点疑问,这里是指的哪里。
参数是从这里开始进行传递的。
经过上文的分析,我们知道$this->group就是实例化的think\route\Domain。
紧接着会跳转到下图,这里的$this就是就是think\route\Domain,要不就没办法解释的。
这块有问题的可以去看第三节文章。
所以说这里的$parent就是think\route\Domain这个类。
所以说这块代码就迎刃而解了。
所以说第三节哪里没看明白的一定要自己拉着代码好好的看,否则越往后越不明白。
这块代码具体做了什么事情后边在深入详解,这里就主要针对$this->parent它是怎么执行的就可以了。
在接着就是这块代码,这块就是对理由参数做了俩中处理。
把带有:符号的参数转化。
例如::name 转化为 <name>。
放在代码中就是$this->rule = <name>。