ThinkPHP 获取请求信息
1. 前言
前面小节介绍了 ThinkPHP 的路由规则,包括 POST、PUT、GET、DELETE 请求方式,本小节主要介绍这几种请求方式中一些常见的信息获取,获取这些参数将有助于加深框架的理解,并且能很好的理解框架工作原理,也能通过这些有用的信息来分析业务中的 BUG。
2. 调用请求对象
首先,为了演示方便,我们定义一个路由规则,定义代码如下:
<?php
use think\facade\Route;
Route::get('info','Test/getInfo');
Tips: 其中
info表示路由名,这是一个GET请求方式,Test表示控制器名,getInfo表示Test控制器下的方法名。
可以直接在控制器方法的参数中注入 Request 类对象,参考代码如下:
<?php
namespace app\controller;
use app\BaseController;
use think\Request;
class Test extends BaseController
{
    public function getInfo(Request $request){
        halt($request);
    }
}
Tips: 其中
Request表示请求对象,这是通过依赖注入进来的,halt()方法是打印内容并结束,$request表示Request对象。
执行结果如下图所示:

Tips: 如图所示表示打印的
Request对象的信息,其中包含了全部的请求信息。
3. 获取当前访问域名或 IP
可以使用 Request 对象中的 host() 方法获取当前访问的域名或 IP,代码如下:
    public function getInfo(Request $request){
        halt($request->host());
    }
执行结果如下图所示:

Tips: 如图所示
host()方法获取到的是当前访问的域名,不包含子url。
4. 获取当前访问端口
可以使用 Request 对象中的 port() 方法获取当前访问的端口号,代码如下:
    public function getInfo(Request $request){
        halt($request->port());
    }
执行结果如下图所示:

Tips: 所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号 。
5. 获取 HTTP 头信息
可以使用 Request 对象中的 header() 方法获取当前 HTTP 请求的头信息,代码如下:
    public function getInfo(Request $request){
        halt($request->header());
    }
执行结果如下图所示:

6. Request 请求对象方法说明
下面列举了一些 Request 请求对象中方法的说明:
| 方法名 | 功能与作用描述 | 
|---|---|
| host | 当前访问域名或者IP | 
| scheme | 当前访问协议 | 
| port | 当前访问的端口 | 
| remotePort | 当前请求的REMOTE_PORT | 
| protocol | 当前请求的SERVER_PROTOCOL | 
| contentType | 当前请求的CONTENT_TYPE | 
| domain | 当前包含协议的域名 | 
| subDomain | 当前访问的子域名 | 
| panDomain | 当前访问的泛域名 | 
| rootDomain | 当前访问的根域名 | 
| url | 当前完整URL | 
| baseUrl | 当前URL(不含QUERY_STRING) | 
| query | 当前请求的QUERY_STRING参数 | 
| baseFile | 当前执行的文件 | 
| root | URL访问根地址 | 
| rootUrl | URL访问根目录 | 
| pathinfo | 当前请求URL的pathinfo信息(含URL后缀) | 
| ext | 当前URL的访问后缀 | 
| time | 获取当前请求的时间 | 
| type | 当前请求的资源类型 | 
| method | 当前请求类型 | 
| rule | 当前请求的路由对象实例 | 
7. 小结
本节课介绍了如何使用 Request 对象获取请求信息,首先介绍了如何调用 Request 请求对象,然后介绍了如何获取当前请求域名、当前访问端口、当前请求的 HTTP 头信息,最后列举了 Request 请求对象中方法的作用说明,若要调用其他方法可以参考本节课介绍的几种方式。
Tips: 代码仓库:https://gitee.com/love-for-poetry/tp6
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
