ThinkPHP路由源码解析(二)(1)

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

路由是项目开发中比较重要的一个环节,每个项目都会使用路由进行管理接口,接下来本文会从源码方面带大家一起学习路由。

框架路由解析



前言

由于文章篇幅的原因,执行在新开一篇文章进行写。


在上一篇中给大家讲解了以下内容。


路由初识化简单分析

通过定义路由再谈门面

路由定义rule方法中的$this->group到底执行了什么

路由规则预处理

解析生成路由标识的快捷访问

但是在路由这块还有很多的内容要来讲解,接下来就会针对以下内容进行解析。


路由参数

变量规则

资源路由

路由配置(就是在route文件中的return中)

dispatch初认识

route-check 检测URL路由

。。。。。。。。。。。。。

接下来就一个一个进行详解。


同样给大家放一个关于路由的执行图,供大家进行参考。


image.png


一、路由参数和变量规则

同样代码先从这里开始,但是这次的关注点是在路由参数和变量规则上。


这俩个点只是简单的给大家说明一下使用和简单的执行流程。


比较深的理解就不去说明了, 因为这俩个点在平时开发过程中是不怎么使用的。


image.png


在上文中还记得在文件thinkphp/library/think/route/RuleItem.php中我们看到过关于路由参数的使用吧!


image.png


并且文档中也给了很多支持的参数,如下图。


image.png


那这个路由参数是怎么使用的呢!


接着使用之前我们使用的路由,并且给设置上URL后缀检测,支持匹配多个后缀。


image.png


那么我们设置的这个路由应该怎么访问呢!


如果按照正常的路由规则进行访问是会报错的,正确的访问方式请继续看。


image.png


正确的请求地址应该为http://www.source.com/index.php/hello/1.html,也就是在请求地址上需要拼接我们设置的后缀html。


image.png


这块的具体执行流程使用代码追踪器简单的看一下即可,咔咔这里就不做演示了。


对于路由参数咔咔这里在给大家演示一个案例,就基本结束了。


全局路由参数


路由参数这块最后一个说明的就是全局路由参数。


直接来到文档就可以看到。


image.png


这里咔咔设置俩个路由规则做测试,一个参数可选,一个必选,并且设置上路由规则添加文件后缀。


image.png


传参数时的请求地址。


image.png


不传参数的请求地址。


image.png


以上就是针对路由参数写的内容。


没有去做特别深的讲解,基本就是说明了怎么使用,有这个东西的存在,所以了解即可。


变量规则


同样的变量规则,这个在咔咔的日常开发工作中是更不可用的。


变量规则咔咔认为唯一的好处就是对参数进行过滤。


也就是说变量规则是在路由规则存在参数时才会存在的行为。


咔咔这里给大家提供一个简单的案例即可。


演示的案例


image.png


在路由后边追加参数pattern


那么接下来看一下这个请求如何写。


当参数为数字时可以输出传入的参数。


image.png


但是当传入字母的时候就会报错。


image.png


所以说变量规则就是对路由规则后的参数进行的过滤,也就是使用正则进行处理的。


截止到这里关于路由参数和变量规则就简单的说到这里了。


虽然说内容很简单,大多数都是使用案例给大家介绍怎么使用,没有去对源码进行深究。


第一平时开发不怎么会去使用。


第二在后文中还需要进一步深入了解,这里只是做一个认识。


其实说到这里估计还是有很多人不明白,为什么输入路由地址就可以出现对内的内容,这个后期会进行深入的了解。


相关文章
|
12天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
12天前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
12天前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是"将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为5种:单例模式、工厂方法模式抽象工厂式、原型模式、建造者模式。
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
2月前
|
缓存 监控 Java
Java线程池提交任务流程底层源码与源码解析
【11月更文挑战第30天】嘿,各位技术爱好者们,今天咱们来聊聊Java线程池提交任务的底层源码与源码解析。作为一个资深的Java开发者,我相信你一定对线程池并不陌生。线程池作为并发编程中的一大利器,其重要性不言而喻。今天,我将以对话的方式,带你一步步深入线程池的奥秘,从概述到功能点,再到背景和业务点,最后到底层原理和示例,让你对线程池有一个全新的认识。
57 12
|
1月前
|
PyTorch Shell API
Ascend Extension for PyTorch的源码解析
本文介绍了Ascend对PyTorch代码的适配过程,包括源码下载、编译步骤及常见问题,详细解析了torch-npu编译后的文件结构和三种实现昇腾NPU算子调用的方式:通过torch的register方式、定义算子方式和API重定向映射方式。这对于开发者理解和使用Ascend平台上的PyTorch具有重要指导意义。
|
13天前
|
安全 搜索推荐 数据挖掘
陪玩系统源码开发流程解析,成品陪玩系统源码的优点
我们自主开发的多客陪玩系统源码,整合了市面上主流陪玩APP功能,支持二次开发。该系统适用于线上游戏陪玩、语音视频聊天、心理咨询等场景,提供用户注册管理、陪玩者资料库、预约匹配、实时通讯、支付结算、安全隐私保护、客户服务及数据分析等功能,打造综合性社交平台。随着互联网技术发展,陪玩系统正成为游戏爱好者的新宠,改变游戏体验并带来新的商业模式。
|
2月前
|
负载均衡 网络协议 定位技术
在数字化时代,利用DNS实现地理位置路由成为提升用户体验的有效策略
在数字化时代,利用DNS实现地理位置路由成为提升用户体验的有效策略。通过解析用户请求的来源IP地址,DNS服务器可判断其地理位置,并返回最近或最合适的服务器IP,从而优化网络路由,减少延迟,提高访问速度。示例代码展示了如何基于IP地址判断地理位置并分配相应服务器IP,实际应用中需结合专业地理数据库和动态调整机制,以应对复杂网络环境带来的挑战。
38 6
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
87 2
|
3月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
87 0
|
3月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
68 0

推荐镜像

更多