laravel5.5源码阅读草稿——路由
laravel 里的路由是由RouteServiceProvider提供的,其中的boot方法为启动项,调用了父类的boot方法。
RouteServiceProvider中的boot方法设置了自己与UrlGenerator类的根命名空间。
通过bootstrap/cache/routes.php处的缓存文件判断路由是否已缓存,分别从缓存与路由类读取。
给app容器加载booted钩子函数,函数内执行了RouteCollection类的refreshNameLookups与refreshActionLookups方法,遍历路由文件,并分别更新name与action列表,action列表存储调用controller的路由,如下图 action ['controller']属性。
"HEADtest/{id?}/{ip?}" => Route {#119 ▼ +uri: "test/{id?}/{ip?}" +methods: array:2 [▶] +action: array:6 [▼ "middleware" => array:1 [▶] "uses" => "App\Http\Controllers\testController@exportExcel" "controller" => "App\Http\Controllers\testController@exportExcel" "namespace" => "App\Http\Controllers" "prefix" => null "where" => [] ] +isFallback: false +controller: null +defaults: [] +wheres: [] +parameters: null +parameterNames: null +computedMiddleware: null +compiled: null #router: Router {#25} #container: Application {#2} }
路由文件里的route::any等门面类调用的方法,在router类里调用addRoute方法,将创建好的route对象传入RouteCollection类里,存储在路由字典里,方便调用
Router创建Route,添加到RouteCollection。
分类:
laravel
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现