请求信息-j9九游

如果要获取当前的请求信息,可以使用\think\request类,
除了下文中的

$request = request::instance();

也可以使用助手函数

$request = request();

当然,最方便的还是使用注入请求对象的方式来获取变量。

例如:

获取url信息

$request = request::instance();
// 获取当前域名
echo 'domain: ' . $request->domain() . '
'
; // 获取当前入口文件 echo 'file: ' . $request->basefile() . '
'
; // 获取当前url地址 不含域名 echo 'url: ' . $request-> . '
'
; // 获取包含域名的完整url地址 echo 'url with domain: ' . $request->;">true) . '
'
; // 获取当前url地址 不含query_string echo 'url without query: ' . $request->base . '
'
; // 获取url访问的root地址 echo 'root:' . $request->root() . '
'
; // 获取url访问的root地址 echo 'root with domain: ' . $request->root(true) . '
'
; // 获取url地址中的path_info信息 echo 'pathinfo: ' . $request->pathinfo() . '
'
; // 获取url地址中的path_info信息 不含后缀 echo 'pathinfo: ' . $request->path() . '
'
; // 获取url地址中的后缀信息 echo 'ext: ' . $request->ext() . '
'
;

输出结果为:

domain: http://tp5.com
file: /index.php
url: /index/index/hello.html?name=thinkphp
url with domain: http://tp5.com/index/index/hello.html?name=thinkphp
url without query: /index/index/hello.html
root:
root with domain: http://tp5.com
pathinfo: index/index/hello.html
pathinfo: index/index/hello
ext: html

设置/获取 模块/控制器/操作名称

$request = request::instance();
echo "当前模块名称是" . $request->module();
echo "当前控制器名称是" . $request->controller();
echo "当前操作名称是" . $request->action();

如果当前访问的地址是 
输出结果为:

当前模块名称是index
当前控制器名称是helloworld
当前操作名称是index

设置模块名称值需要向module方法中传入名称即可,同样使用于设置控制器名称和操作名称

request::instance()->module('module_name');

获取请求参数

$request = request::instance();
echo '请求方法:' . $request->method() . '
'
; echo '资源类型:' . $request->type() . '
'
; echo '访问ip地址:' . $request->ip() . '
'
; echo '是否ajax请求:' . var_export($request->isajax(), true) . '
'
; echo '请求参数:'; dump($request->param()); echo '请求参数:仅包含name'; dump($request->only(['name'])); echo '请求参数:排除name'; dump($request->except(['name']));

输出结果为:

请求方法:get
资源类型:html
访问ip地址:127.0.0.1
是否ajax请求:false
请求参数:
array (size=2)
  'test' => string 'ddd' (length=3)
  'name' => string 'thinkphp' (length=8)
  
请求参数:仅包含name
array (size=1)
  'name' => string 'thinkphp' (length=8)
  
请求参数:排除name
array (size=1)
  'test' => string 'ddd' (length=3)

获取路由和调度信息

hello方法修改如下:

$request = request::instance();
echo '路由信息:';
dump($request->route());
echo '调度信息:';
dump($request->dispatch());

路由定义为:

return [
    'hello/:name' =>['index/hello',[],['name'=>'\w ']],
];

访问下面的url地址:

http://servername/hello/thinkphp

输出信息为:

路由信息:
array (size=4)
  'rule' => string 'hello/:name' (length=11)
  'route' => string 'index/hello' (length=11)
  'pattern' => 
    array (size=1)
      'name' => string '\w ' (length=3)
  'option' => 
    array (size=0)
      empty
      
调度信息:
array (size=2)
  'type' => string 'module' (length=6)
  'module' => 
    array (size=3)
      0 => null
      1 => string 'index' (length=5)
      2 => string 'hello' (length=5)
      

设置请求信息

如果某些环境下面获取的请求信息有误,可以手动设置这些信息参数,使用下面的方式:

$request = request::instance();
$request->root('index.php');
$request->pathinfo('index/index/hello');
文档最后更新时间:2018-04-26 09:16:25
网站地图