php 各种路由分析_thinkphp5路由详解
tp5路由视频https://ke.qq.com/webcourse/index.html#course_id=235325&term_id=100277509&taid=1539754365785917&vid=f1420a94f7r
1.支持三种方式的url解析规则
2.路由只针对应用,不针对模块(路由设置也是针对应用下所有模块)
3.如果某个模块不进行路由解析,需要关闭它
例: //关闭admin模块的路由(注意:写在加载框架引导文件之后,否则报错)
\think\App::route(false);
![](https://box.kancloud.cn/f346f592ae41fcde0e9a8076a148dde7_1041x526.png)
一:普通模式
定义:
完全使用PATH_INFO方式URL;
形式:
http://www.tp.com/admin.php/index/index(默认的,完整的,未设置的)
如何设置:
//配置文件中
~~~
//是否开启路由
'url_route_on' => false,
//是否强制使用路由
'url_route_must' => falese,
~~~
二:混合模式
定义:
开启路由,并使用路由定义+默认PATH_INFO方式混合
如何设置:
~~~
//是否开启路由
'url_route_on' => true,
//是否强制使用路由
'url_route_must' => false,
~~~
三:强制模式
定义:
开启路由,并必须设置路由才能访问
如何设置:
//是否开启路由
'url_route_on' => true,
//是否强制使用路由
'url_route_must' => true,
#### 设置路由
设置路由格式:
`Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');`
1.动态单个注册
1)配置文件:tp5\application\route.php
2)如何设置:![](https://box.kancloud.cn/5fa6fe8db6055e5878a495c4fef9424a_1722x303.png)
(设置了路由后的页面不能使用PATH_INFO访问)
3)路由的形式
a.静态地址路由
//注册路由test 访问到index模块index控制器test方法
` Route::rule('test','index/index/test');`
b.给路由带参数
//访问到index模块index控制器course方法并携带参数
` Route::rule('course/:id','index/index/course');`
例:
路由写法:http://www.tp.com/course/1
默认写法:http://www.tp.com/index/index/course/id/1
c.携带多个参数
//如果路由设置2个参数,必须写2个参数
//访问到index模块index控制器shijian方法
`Route::rule('time/:year/:month','index/index/shijian');`
d.可选参数路由
//month为可选参数
` Route::rule('time/:year/[:month]','index/index/shijian');`
e.全动态路由(参数1如果是其他方法,会优先访问到其他方法中,所有不建议使用全动态路由)
`Route::rule(':a/:b','index/index/dongtai');`
f.完全匹配路由(后面加上$)
//后面多加参数什么的就无法访问
`Route::rule('test1$','index/index/test1');`
g.带额外参数
`Route::rule('test2','index/index/test2?id=10&name=zhangsan');`
//打印地址栏
dump(input());
4)路由的请求方式
1.get,post,put,delete
2.默认支持所有请求方式
//支持get请求
Route::rule('type','index/index/type','get');
Route::get('type','index/index/type');
//支持post请求
方法一:Route::rule('type','index/index/type','post');
方法二:Route::post('type','index/index/type');
![](https://box.kancloud.cn/0364c2ec5beab03b164511e536370a77_1104x290.png)
//同时支持get和post
`Route::rule('type','index/index/type','get|post');`
//支持put请求类型
Route::rule('type','index/index/type','put');
Route::put('type','index/index/type);
//支持delete请求
Route::rule('type','index/index/type','delete');
Route::delete('type','index/inex/delete);
//支持所有类型
~~~
Route::rule('type','index/index/type','*');
Route::any('type','index/index/type');
~~~
小知识:
如何模拟请求(手册请求伪装)
![](https://box.kancloud.cn/360c01bfa0d0401a53eff1bb96349040_504x171.png)
2.动态批量注册
Route::rule([
'路由规则1' => '路由参数和地址',
'路由规则2'=>['路由地址和参数',匹配参数(数组)','变量规则(数组)']
...
],'','请求类型','匹配参数(数组)','变量规则' );
例:
Route::rule([
"test" => "index/index/test",
"course/:id"=>"index/index/course"
],'','get');
//只支持get
Route::get([
"test"=>"index/index/test",
"course/:id"=>"index/index/course"
]);
3.配置文件批量注册
application\route.php
![](https://box.kancloud.cn/144c0b5da8dcdbc45f5660a7459a4610_897x320.png)
4.变量规则
Route::rule("course/:id/:name","index/index/course","get",[],['id'=>'\d{1,3}','name'=>'\w+']);
注: 正则
\d+ //必须为数字
\d{1,3} //必须为数字,并且1到3位数之间
\w+ //必须为字符串
5.路由参数
Route::rule("course/:id","index/index/course","get",['method'=>'get','ext'=>'html'],[]);
//路由参数method 规定请求方式必须是get
//路由参数ext规定设置路由的后缀必须是html
6.资源路由
//声明
Route::resource(
'blog','index/blog' );
//会自动注册7个路由规则
| 标识 | 请求类型 | 生成路由规则 | 对应操作方法 |
| --- | --- | --- | --- |
| index | ge | blog | index |
| create | get | blog/create | create |
| save | post | blog | save |
| read | get | blog/:id | read |
| edit | get | blod/:id | edit |
| update | put | blod/:id | update |
| delete | delete | blod/:id | delete |
7.
php 各种路由分析_thinkphp5路由详解相关推荐
- 网络技能大赛-2018年国赛真题[2018年全国职业技能大赛高职组计算机网络应用赛项真题-I卷]路由交换部分答案详解
网络技能大赛-2018年国赛路由交换部分答案详解 2022年全国职业技能大赛网络系统管理赛项相较2021年再次做出改动,Linux部分从之前的Debian又换回了CentOS,不过相应增加了UOS国产 ...
- 网络技能大赛-2019年国赛真题[2019年全国职业技能大赛高职组计算机网络应用赛项真题-H卷]路由交换部分答案详解
网络技能大赛-2019年国赛真题[2019年全国职业技能大赛高职组计算机网络应用赛项真题-H卷]路由交换部分答案详解 2022年全国职业技能大赛网络系统管理赛项相较2021年再次做出改动,Linux部 ...
- mysql ssd 性能测试 写入_MySQL服务器的SSD性能问题分析和测试详解
[问题] 我们有台HP的服务器,SSD在写IOPS约5000时,%util达到80%以上,那么这块SSD的性能究竟有没有问题,为解决这个问题做了下面测试. [工具] blktrace是linux下用来 ...
- java 生成dump_java dump文件怎么生成和分析-JMAP用法详解
jmap是java自带的工具 1. 查看整个JVM内存状态 jmap -heap [pid] 2. 查看JVM堆中对象详细占用情况 jmap -histo [pid] 3. 导出整个JVM 中内存信息 ...
- Android Telephony分析(五) ---- TelephonyRegistry详解
本文紧接着上一篇文章<Android Telephony分析(四) -- TelephonyManager详解 >的1.4小节. 从TelephonyRegistry的大部分方法中: ...
- Android Telephony分析(三) ---- RILJ详解
前言 本文主要讲解RILJ工作原理,以便更好地分析代码,分析业务的流程. 这里说的RILJ指的是RIL.java (frameworks\opt\telephony\src\java\com\And ...
- Android Telephony分析(二) ---- RegistrantList详解
前言 本文主要讲解RegistrantList的原理,以及如何快速分析RegistrantList相关的代码流程. 在Telephony模块中,在RIL.Tracker(ServiceStateTr ...
- 一文数学数模-相关性分析(二)斯皮尔曼相关(spearman)相关性分析一文详解+python实例代码
前言 相关性分析算是很多算法以及建模的基础知识之一了,十分经典.关于许多特征关联关系以及相关趋势都可以利用相关性分析计算表达.其中常见的相关性系数就有三种:person相关系数,spearman相关系 ...
- CTF---basecrack---Base编码分析工具安装详解
CTF-basecrack-Base编码分析工具安装详解 准备工具:Python环境(最新版) 安装详情: 1)首先下载工具,访问网站或者私信我进行工具获取,网站地址:https://github.c ...
最新文章
- 收藏这10个办公神器,让你的职场办公更高效!
- 五步就让你成为一名很出色的程序员!
- SUID和SGID位简介
- 可视化---寻找路径与算法
- join和group by能一块用吗_冷冻一下地球能缓解温室效应吗?| No.171
- [导入]C#面向对象设计模式纵横谈(10):Decorator 装饰模式(结构型模式).zip(9.84 MB)...
- idea如何导入java工程_Eclipse java web项目 ,导入IntelliJ IDEA 完整操作!
- webrtc静音检测
- fedora下做成liveOS的U盘容量变小问题
- 【转】C#中的弱事件:不同的解决方法
- visio2016下载以及永久激活
- Ubuntu17.10下安装TIM
- arcgis矢量文件计算多个同类属性面积总和
- react+ant启动服务时太慢解决方案
- 科技热点周刊|马斯克卖掉特斯拉 10% 股票;Facebook 停用面部识别系统;微软拥抱 Metaverse;雅虎退出中国
- PDF如何旋转页面?这样旋转就好了
- matlab省略,matlab的省略号
- MySQL 8.0.17 第一次登录并修改密码
- Pandas合并之Concat合并
- 25.有5个人做在一起, 问第五个人多少岁? 他说比第四个人大2岁. 问第四个人岁数, 他说比第是三个人大2岁. 问第三个人, 又说比第二人大两岁. 问第二个人, 说比第一个人大两岁. 最后问第一个人