自学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‘);

原文地址:https://www.cnblogs.com/MingGyGy-Castle/p/11974221.html

时间: 2024-10-12 22:28:24

自学PHP的第22天---ThinkPHP中的路由、ThinkPHP目录结构的相关文章

[Linux] Linux 中的基本命令与目录结构(待移除)

Linux 中的基本命令与目录结构 目录 一.Linux 基本目录结构 二.基本命令 三.浏览目录 四.中间命令 五.更改密码 六.环境变量和 shell 变量 七.命令路径 八.文本编辑器 九.获取在线帮助 十.shell 输入输出 十一.操作进程 十二.更改文件权限 十三.归档和压缩 一.Linux 基本目录结构 二.基本命令 1.shell 命令行界面,Unix 中最重要的部分之一. 2.shell 是运行命令行的应用程序,命令行是指用户输入的命令. 3.shell 脚本,也是 Unix

[Linux] Linux 中的基本命令与目录结构(初稿)

Linux 中的基本命令与目录结构 目录 一.Linux 基本目录结构 二.基本命令 三.浏览目录 四.中间命令 五.更改密码 六.环境变量和 shell 变量 七.命令路径 八.文本编辑器 九.获取在线帮助 十.shell 输入输出 十一.操作进程 十二.更改文件权限 十三.归档和压缩 一.Linux 基本目录结构 二.基本命令 1.shell 命令行界面,Unix 中最重要的部分之一. 2.shell 是运行命令行的应用程序,命令行是指用户输入的命令. 3.shell 脚本,也是 Unix

thinkphp中url路由

通过 URL 路由可以制造出更加友好和符合 SEO 的 URL 1.ThinkPHP URL 路由简介 简单的说,URL 路由就是允许你在一定规则下定制你需要的 URL 样子,以达到美化 URL ,提高用户体验,也有益于搜索引擎收录的目的. 2.使用 Apache 的 URL Rewrite 规则也能达到 URL 定制的功能,

【ThinkPHP3.2.3】学习ThinkPHP笔记:熟悉框架目录结构(2)

: ├─ThinkPHP 框架系统目录(可以部署在非web目录下面) │  ├─Common       核心公共函数目录 │  ├─Conf         核心配置目录  │  ├─Lang         核心语言包目录 │  ├─Library      框架类库目录 │  │  ├─Think     核心Think类库包目录 │  │  ├─Behavior  行为类库目录 │  │  ├─Org       Org类库包目录 │  │  ├─Vendor    第三方类库目录 │ 

Linux中的文件和目录结构详解

当在使用Linux的时候,如果您通过ls –l / 就会发现,在/下包涵很多的目录,比如etc.usr.var.bin ... ... 等目录,而在这些目录中,我们进去看看,发现也有很多的目录或文件.文件系统在Linux下看上去就象树形结构,所以我们可以把文件系统的结构形象的称为 树形结构. 文件系统的是用来组织和排列文件存取的,所以它是可见的,在Linux中,我们可以通过ls等工具来查看其结构,在Linux系统中,我们见到的都是树形结构:比如操作系统安装在一个文件系统中,它表现为由/ 起始的树

对Android Studio 中Android 类型的目录结构的解析

app :创建项目后,自动创建一个名称为app的Module manifests:保存配置文件 java:保存java源代码文件 res:保存资源文件 Gradle Scripts:保存Gradle构建和属性文件 manifests节点manifests节点用于显示Android应用程序的配置文件 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://

thinkphp中导入和使用阿里云OSSsdk

照做绝对行,在ThinkPHP中,第三方库都放在ThinkPHP/Library/Vendor/路径下. 1.下载OSS PHP SDK:https://help.aliyun.com/document_detail/oss/sdk/php-sdk/install.html 2.在ThinkPHP/Library/Vendor/下建立一个OSS目录,将解压后的SDK拷贝到这个目录: 在ThinkPHP中的的  ThinkPHP/Library/Vendor/OSS/ 目录下adk文件与目录: s

ThinkPHP中_initialize()与__construct()用法

1 _initialize()不是php类中的构造函数,php类的构造函数只有__construct(). 2 类的初始化:子类如果有自己的构造函数__construct(),则调用自己的进行初始化,如果没有,则调用父类的构造函数进行自己的初始化 3 当子类和父类都有__construct()函数的时候,如果要在初始化子类的时候同时调用父类的__constrcut(),则可以在子类中使用parent::__construct(). 如果我们写两个类,如下  代码如下 复制代码 class Act

ThinkPHP中 按条件查询后列表显示

最近在项目中遇到了需要根据下拉框的条件筛选出符合条件的数据,然后进行列表显示的问题. 在ThinkPHP中进行列表显示的传统过程:通过在后台控制器中查询出数据,然后通过$this->assign()来实现控制器数据向页面的传递,在页面中通过<foreach>或<volist>标签来进行数据的解析,(注:在通过标签进行数据的解析时需要以“$”符号的形式). 在进行条件查询时,需要通过jquery中ajax的方式将条件GET到后台控制器,后台控制器中接收数据,然后根据条件进行查询