自学PHP的第22天---ThinkPHP中的路由、ThinkPHP目录结构
这一切的一切都得从“Hello world”说起!!!
有很多东西在thinkPHP的官方开发文档上其实都有讲到,我在这里只是想记录自己每天坚持学习PHP的情况,今天接触ThinkPHP的路由,路由这一块可以更好的隐藏我们网站的结构,让我们的网站更安全,这是路由带给我们的一些好处。下面来记录ThinkPHP中的路由这一块主要内容。
一、配置路由
在ThinkPHP框架中找到路由目录下的php文件,系统默认会给我们一个route.php的这个文件,当然我们也能在这个目录下创建自己的一个路由文件,系统会自动加载这个目录下的所有文件
这个就是路由的文件
ThinkPHP的目录结构
二、配置一个简单路由规则
/**
*配置一个简单的路由规则 第一个参数自定义 第二个参数依次是模块/控制器/方法
* ------->路由执行是从方法开始找,接着找控制器,再是模块 若不填写:系统默认使用配置文件中所配置的默认
* 可以在配置文件app.php中配置默认的模块、控制器和方法
*/
Route::rule('good','index/index/index');
这时在浏览器中只需要输入“http://域名/good” 就能找到指定的模块下的控制器中的方法,也可在后方加.html,需要在配置文件app.php中设置URL伪静态的后缀,默认为html
三、路由表达式
//动态路由
//id为动态获取的,也就是在good/后面随意输入都可以路由到index/index/index
Route::rule('good/:id','index/index/index');
//当然id里面的值也是可以获取的
//在控制器中使用门面下的Request中的param('id')可以获取id的值
Route::rule('good/[:id]','index/index/index');
//路由地址 直接路由到操作方法
//看起来似乎和前面的没什么不同,本质的区别是直接执行某个控制器的方法,不需要去解析模块/控制器/操作方法这些,同时不会去初始化模块
Route::rule('good','@index/index/index');
四、路由重定向
比如说重定向到百度:
//重定向到百度
Route::rule('baidu','https://www.baidu.com');
五、路由请求类型
请求类型通常有:post、get、delete、put、等请求,路由请求类型可以指定某些请求来请求某个模块下的某个控制器中的某个方法
//post请求默认模块/默认控制器/默认方法
Route::rule('good','','post');
Route::post('good','');
//get、delete等请求都与上类似
//设置多个请求类型
Route::rule('good','','post|get|delete|put');
六、路由参数
下表从官方文档拿下来的一个参数、说明和对应的方法名
参数 | 说明 | 方法名 |
---|---|---|
method | 请求类型检测,支持多个请求类型 | method |
ext | URL后缀检测,支持匹配多个后缀 | ext |
deny_ext | URL禁止后缀检测,支持匹配多个后缀 | denyExt |
https | 检测是否https请求 | https |
domain | 域名检测 | domain |
before | 前置行为(检测) | before |
after | 后置行为(执行) | after |
merge_extra_vars | 合并额外参数 | mergeExtraVars |
complete_match | 是否完整匹配路由 | completeMatch |
model | 绑定模型 | model |
cache | 请求缓存 | cache |
param_depr | 路由参数分隔符 | depr |
ajax | Ajax检测 | ajax |
pjax | Pjax检测 | pjax |
response | 绑定response_send行为 | response |
validate | 绑定验证器类进行数据验证 | validate |
header | 设置Response的header信息 | header |
append | 追加额外的参数(5.1.5+ ) |
append |
middleware | 注册路由中间件(5.1.6+ ) |
middleware |
merge_rule_regex | 合并路由规则(V5.1.6+ ) |
mergeRuleRegex |
filter | 请求变量过滤(V5.1.16+ ) |
filter |
这里举个路由参数的例子:
Route::rule('good','')
->ext('html')
->https(false);
//ext()设置伪静态后缀
//https()是否验证https请求
七、闭包支持
举个hello world的栗子,这一切的一切都得从“Hello world”说起
//闭包支持
Route::rule('good',function (){
return "Hello world";
});
八、URL生成
配置好路由之后给这个路由一个名字,然后在其它的地方调用助手函数url()或者使用门面下的build方法可获取对应的url地址
Route::rule('good','')->name('new_good');
//通过助手函数的方式获取url
//url('new_good');
//通过门面下的Url中的build方法
//Url::build('new_good');
自学PHP的第22天---ThinkPHP中的路由、ThinkPHP目录结构的更多相关文章
- [Linux] Linux 中的基本命令与目录结构
Linux 中的基本命令与目录结构 目录 一.Linux 基本目录结构 二.基本命令 三.浏览目录 四.中间命令 五.更改密码 六.环境变量和 shell 变量 七.命令路径 八.文本编辑器 九.获取 ...
- Linux中的文件和目录结构详解
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- ThinkPHP中的"路由"是什么意思?
路由(route)是指根据url, 分配到对应的处理程序的映射. 简单来说,就是一个路径的解析,根据客户端提交的路径,将请求解析到相应的模块/控制器/方法上. 转载自:https://blog.csd ...
- IntelliJ IDEA 中的Java程序目录结构
--src 应用程序源代码与测试代码的根目录 --main 应用程序代码的源目录 --java 源代码 --resources 项目用到的资源文件 --test 测试程序代码的源目录 --java 测 ...
- thinkphp中导入和使用阿里云OSSsdk
照做绝对行,在ThinkPHP中,第三方库都放在ThinkPHP/Library/Vendor/路径下. 1.下载OSS PHP SDK:https://help.aliyun.com/documen ...
- ThinkPHP中,运用PHPExcel,将数据库导出到Excel中
1.将PHPExcel插件放在项目中,本人位置是ThinkPHP文件夹下,目录结构如下/ThinkPHP/Library//Vendor/...2.直接根据模型,配置三个变量即可使用./** * Ex ...
- 自学Linux Shell1.2-Linux目录结构
点击返回 自学Linux命令行与Shell脚本之路 1.2-Linux目录结构 /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置 ...
- ThinkPHP 中使用 IS_AJAX 判断原生 JS 中的 Ajax 出现问题
问题: 在 ThinkPHP 中使用原生 js 发起 Ajax 请求的时候.在控制器无法使用 IS_AJAX 进行判断.而使用 jQuery 中的 ajax 是没有问题的. 在ThinkPHP中.有一 ...
- [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别
1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...
随机推荐
- python线程threading.Timer源码解读
threading.Timer的作用 官方给的定义是: """Call a function after a specified number of seconds: t ...
- Linux下安装nexus
下载地址:https://help.sonatype.com/repomanager3/download tar xf nexus-linux-3.19.1-01.tar.gz cd nexus-li ...
- 使用websocketpp进行websocket通信
websocketpp介绍 websocketpp是一个只有头文件的支持websocket协议的C++开源库,支持websocket客户端和服务器功能,网络传输模块基于boost::asio 提供 s ...
- 超简单解决linux音乐播放器乱码问题
问题 中文MP3的tag信息有些因为采用了GBK编码, 导致linux下的大多播放器(Rhythmbox, Audacious)无法正确识别而显示乱码. 如下图Audacious的乱码情况. 网上的常 ...
- git push后出现错误 ![rejected] master -> master(non-fast-forward) error:failed to push some refs to 'XXX'
本地创建了一个project并在GitHub上创建了一个仓库,想要将本地的仓库链接到远程仓库我用的是如下方法:git init //初始化本地仓库git remote add origin XX ...
- [LC]747题 Largest Number At Least Twice of Others (至少是其他数字两倍的最大数)
①中文题目 在一个给定的数组nums中,总是存在一个最大元素 . 查找数组中的最大元素是否至少是数组中每个其他数字的两倍. 如果是,则返回最大元素的索引,否则返回-1. 示例 1: 输入: nums ...
- Elasticsearch从入门到放弃:文档CRUD要牢记
在Elasticsearch中,文档(document)是所有可搜索数据的最小单位.它被序列化成JSON存储在Elasticsearch中.每个文档都会有一个唯一ID,这个ID你可以自己指定或者交给E ...
- 在SQL Server数据库中执行存储过程很快,在c#中调用很慢的问题
记录工作中遇到的问题,分享出来: 原博客地址:https://blog.csdn.net/weixin_40782680/article/details/85038281 今天遇到一个比较郁闷的问题, ...
- 达梦关键字(如:XML,EXCHANGE,DOMAIN,link等)配置忽略
背景:在使用达梦数据库时,查询SQL中涉及XML,EXCHANGE,DOMAIN,link字段,在达梦中是关键字,SQL报关键词不能使用的错误. 解决办法: 配置达梦安装文件E:\MyJava\dmd ...
- convert svn repo to git
https://john.albin.net/git/convert-subversion-to-git 1. 抓取Log 在linux 上做的,其余是在win上做的. 2. svn co svn:/ ...