Thinkphp5.0 rc4.0 请求类Request.php

今天给大家分享的是请求类Request.php,它是tp5rc4.0核心类库里的,目录路径为:thinkphp/library/think/Request.php


这个类非常强大,用来采集请求信息那简直是:怎一个爽字了得?


下面给大家分享它的用途:

1.获取当前请求的模块名,控制器名,方法名:

获取模块名:\think\Request::instance()->module();

获取控制器名:\think\Request::instance()->controller();

获取方法名:\think\Request::instance()->action();

注意使用场景:一定要在程序解析URL请求过后,调用以下方法才有效(你将它放配置文件里调用,肯定给你返回空字符串的!)。故在控制器里调用,妥妥地给你返回你需要的东西!


2.获取当前url参数、session、cookie值:

获取当前url全部参数:\think\Request::instance()->param();

获取当前URL指定参数值:\think\Request::instance()->param('id');

获取当前session全部参数:\think\Request::instance()->session();

二位session指定参数的获取:例如$_SESSION['id']['auth'] = 5;则用点将维数分开:\think\Request::instance()->session('id.auth');

cookie:\think\Request::instance()->cookie();//使用同session

注意:PARAM变量是框架提供的用于自动识别GETPOST或者PUT请求的一种变量获取方式,是系统推荐的获取请求参数的方法


3.采集当前web系统信息:

$request = Request::instance();
// 获取当前域名
echo 'domain: ' . $request->domain() . '<br/>';
// 获取当前入口文件
echo 'file: ' . $request->baseFile() . '<br/>';
// 获取包含域名的完整URL地址
echo 'url with domain: ' . $request->url(true) . '<br/>';
// 获取URL访问的ROOT地址
echo 'root:' . $request->root() . '<br/>';
// 获取URL地址中的PATH_INFO信息
echo 'pathinfo: ' . $request->pathinfo() . '<br/>';
// 获取URL地址中的后缀信息
echo 'ext: ' . $request->ext() . '<br/>';
$request = Request::instance();
echo '请求方式:' . $request->method() . '<br/>';
echo '资源类型:' . $request->type() . '<br/>';
$info = Request::instance()->header();//获取请求头信息
echo $info['accept'];
echo $info['accept-encoding'];
echo $info['user-agent'];
echo '客户端ip:' . $request->ip() . '<br/>';
echo '请求时间:' . $request->time() . '<br/>';
系统给出的资源类型如下:
	'html' => 'text/html,application/xhtml+xml,*/*',
        'xml'  => 'application/xml,text/xml,application/x-xml',
        'json' => 'application/json,text/x-json,application/jsonrequest,text/json',
        'js'   => 'text/javascript,application/javascript,application/x-javascript',
        'css'  => 'text/css',
        'rss'  => 'application/rss+xml',
        'yaml' => 'application/x-yaml,text/yaml',
        'atom' => 'application/atom+xml',
        'pdf'  => 'application/pdf',
        'text' => 'text/plain',
        'png'  => 'image/png',
        'jpg'  => 'image/jpg,image/jpeg,image/pjpeg',
        'gif'  => 'image/gif',
        'csv'  => 'text/csv',




4.判断请求类型:
// 是否为 GET 请求
if (Request::instance()->isGet()) echo "当前为 GET 请求";
// 是否为 POST 请求
if (Request::instance()->isPost()) echo "当前为 POST 请求";
// 是否为 PUT 请求
if (Request::instance()->isPut()) echo "当前为 PUT 请求";
// 是否为 DELETE 请求
if (Request::instance()->isDelete()) echo "当前为 DELETE 请求";
// 是否为 Ajax 请求
if (Request::instance()->isAjax()) echo "当前为 Ajax 请求";
// 是否为 Pjax 请求
if (Request::instance()->isPjax()) echo "当前为 Pjax 请求";
// 是否为手机访问
if (Request::instance()->isMobile()) echo "当前为手机访问";
// 是否为 HEAD 请求
if (Request::instance()->isHead()) echo "当前为 HEAD 请求";
// 是否为 Patch 请求
if (Request::instance()->isPatch()) echo "当前为 PATCH 请求";
// 是否为 OPTIONS 请求
if (Request::instance()->isOptions()) echo "当前为 OPTIONS 请求";
// 是否为 cli
if (Request::instance()->isCli()) echo "当前为 cli";
// 是否为 cgi
if (Request::instance()->isCgi()) echo "当前为 cgi";

5.请求伪装:(个人感觉这个比较好)

支持请求类型伪装,可以在POST表单里面提交_method变量,传入需要伪装的请求类型,例如:

<form method="post" action="">
    <input type="text" name="name" value="Hello">
    <input type="hidden" name="_method" value="PUT" >
    <input type="submit" value="提交">
</form>

提交后的请求类型会被系统识别为PUT请求。

你可以设置为任何合法的请求类型,包括GETPOSTPUTDELETE等。

如果你需要改变伪装请求的变量名,可以修改应用配置文件:

// 表单请求类型伪装变量
'var_method'             => '_m',

今天内容比较简单,大部分从Tp完全手册复制过来的。仅测试的一部分都好用!这个跟之前的TP3.2.2有很大不同。之前使用的时候可以直接if(IS_GET){}  if(IS_POST){} 或者if(IS_AJAX){},现在官方要求使用
if(\think\Request::instance()->isAjax()){}
貌似代码量变大了点,但更像Laravel风格了!
哦,对了,源码里还有一个获取上传的文件信息 \think\Request::instance()->file();有兴趣的朋友可以研究下!
$image = \think\Image::open(\think\Request::instance()->file('image'));




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值