ThinkPHP路由源码解析(一)(4)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: ThinkPHP路由源码解析(一)

1.首先代码就会执行这部分

image.png



从一开始就进行了一个简单的判断$,那么这个是从哪里过来的呢!


在文件thinkphp/library/think/route/RuleGroup.php这里就对$进行了处理。


image.png


所以说在什么情况下会执行预处理的第一部分呢!


我们来看一下简单的案例。


image.png


然后在路由预处理中进行打印,就会发现打印结果后边会多一个$符号。


image.png

image.png




substr介绍


这里对substr进行简单的说明一下,碰到每一个知识点都简单的回顾一下。


这个方法用来字符串截取。


参数一:需要截取的字符串


参数二:从什么位置开始截取,正数从左往右,负数结尾开始,0 - 在字符串中的第一个字符处开始


参数三:长度,正数从参数二进行返回,负数从末端进行返回。


所以说最终这块代码的执行会把$这个符号取消掉,只留为/,打印结果如下图。


image.png


接着就是对路由预处理的下半部分进行解析。


先进行一次移除左侧所有的斜杠的处理。


image.png


在接下来的$this->parent大家有有没有一点点疑问,这里是指的哪里。


参数是从这里开始进行传递的。


经过上文的分析,我们知道$this->group就是实例化的think\route\Domain。


image.png


紧接着会跳转到下图,这里的$this就是就是think\route\Domain,要不就没办法解释的。


这块有问题的可以去看第三节文章。


image.png


所以说这里的$parent就是think\route\Domain这个类。


image.png


所以说这块代码就迎刃而解了。


所以说第三节哪里没看明白的一定要自己拉着代码好好的看,否则越往后越不明白。


这块代码具体做了什么事情后边在深入详解,这里就主要针对$this->parent它是怎么执行的就可以了。

image.pngimage.png



在接着就是这块代码,这块就是对理由参数做了俩中处理。


把带有:符号的参数转化。


例如::name 转化为 <name>。


放在代码中就是$this->rule = <name>。


image.png



相关文章
|
10天前
|
消息中间件 缓存 安全
Future与FutureTask源码解析,接口阻塞问题及解决方案
【11月更文挑战第5天】在Java开发中,多线程编程是提高系统并发性能和资源利用率的重要手段。然而,多线程编程也带来了诸如线程安全、死锁、接口阻塞等一系列复杂问题。本文将深度剖析多线程优化技巧、Future与FutureTask的源码、接口阻塞问题及解决方案,并通过具体业务场景和Java代码示例进行实战演示。
29 3
|
24天前
|
存储 JavaScript 前端开发
Vue3权限控制全攻略:路由与组件层面的用户角色与权限管理方法深度解析
Vue3权限控制全攻略:路由与组件层面的用户角色与权限管理方法深度解析
93 2
|
28天前
|
存储
让星星⭐月亮告诉你,HashMap的put方法源码解析及其中两种会触发扩容的场景(足够详尽,有问题欢迎指正~)
`HashMap`的`put`方法通过调用`putVal`实现,主要涉及两个场景下的扩容操作:1. 初始化时,链表数组的初始容量设为16,阈值设为12;2. 当存储的元素个数超过阈值时,链表数组的容量和阈值均翻倍。`putVal`方法处理键值对的插入,包括链表和红黑树的转换,确保高效的数据存取。
51 5
|
29天前
|
Java Spring
Spring底层架构源码解析(三)
Spring底层架构源码解析(三)
|
29天前
|
XML Java 数据格式
Spring底层架构源码解析(二)
Spring底层架构源码解析(二)
|
30天前
|
算法 Java 程序员
Map - TreeSet & TreeMap 源码解析
Map - TreeSet & TreeMap 源码解析
32 0
|
30天前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
66 0
|
30天前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
51 0
|
30天前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
58 0
|
30天前
|
安全 Java 程序员
Collection-Stack&Queue源码解析
Collection-Stack&Queue源码解析
74 0

推荐镜像

更多
下一篇
无影云桌面