laravel5.5源码阅读草稿——路由
2024-08-23 02:35:05
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。
最新文章
- PostgreSQL 9.3发布
- TiD大会学习心得之沟通交流
- 【读书笔记】.Net并行编程高级教程(二)-- 任务并行
- Dapper.NET 使用简单举例
- curl/wget 测试http请求的响应头信息
- getting started with building a ROS simulation platform for Deep Reinforcement Learning
- 数往知来 ASP.NET_多线程_Socket<;十五>;
- Gradle实战:发布aar包到maven仓库
- Unescape HTML entities in Javascript Unescape HTML转成html代码
- ASP超级网店V2.5一注入漏洞
- Html小插件
- ArcGIS10.2直连PostgreSQL存在问题
- java集合框架02——Collection架构与源码分析
- 让BLE设备的名称包含MAC地址
- WP Super Cache+七牛云配置CDN加速,让你的网站秒开
- ANI功能分析
- 巡风源码阅读与分析---view.py
- (已解决)Xcode 运行报错: clang: error: unknown argument: &#39;-websockets&#39;
- Kafka常用命令收录
- solr后台界面介绍——(十一)