作者:北京城市环境监督主力军 | 来源:互联网 | 2023-09-23 11:10
TP6中请求的使用一、请求的使用1、引入Request对象usethink\facade\Request;方式1、构造方法注入protected$request;publicfun
TP6中请求的使用
一、请求的使用
//1、引入Request对象
use think\facade\Request;
//方式1、构造方法注入
protected $request;
public function __construct(Request $request)
{
$this->request = $request;
}
//方式2、操作方法注入
public function index(Request $request)
{
return $request->param('name');
}
//方式3、静态调用
public function index()
{
return Request::param('name');
}
//方式4、助手函数
public function index()
{
return request()->param('name');
}
个人推荐使用助手函数方式或者静态调用,比较简单直观
二、请求信息
常用的:
request()->host(); //当前访问域名或者IP
request()->domain(); //当前包含协议的域名
request()->url(); //当前完整的url
request()->query(); //当前请求的query_string
request()->method(); //请求方法
request()->controller(); //当前控制器
request()->action(); //当前操作
三、获取输入变量
// 获取当前请求的所有变量(经过过滤)
Request::param();
// 获取当前请求未经过滤的所有变量
Request::param(false);
// 获取当前请求的name变量
Request::param('name');
// 获取部分变量
Request::param(['name', 'email']);
//判断变量是否存在
Request::has('name','post');
//默认值
Request::get('name'); // 返回值为null
Request::get('name',''); // 返回值为空字符串
Request::get('name','default'); // 返回值为default
四、变量过滤
//框架默认没有设置任何全局过滤规则,你可以在app\Request对象中设置filter全局过滤属性:
namespace app;
class Request extends \think\Request
{
protected $filter = ['htmlspecialchars'];
}
// 获取get变量 并用htmlspecialchars函数过滤
Request::get('name','','htmlspecialchars');
// 获取param变量 并用strip_tags函数过滤
Request::param('username','','strip_tags');
// 获取post变量 并用org\Filter类的safeHtml方法过滤
Request::post('name','','org\Filter::safeHtml');
五、助手函数
//判断变量是否定义
input('?get.id');
input('?post.name');
input('?name');
// 获取单个参数
input('name');
// 获取全部参数
input('');
HTTP头信息:
//获取全部头信息
$info = Request::header();
echo $info['accept'];
echo $info['accept-encoding'];
echo $info['user-agent'];
//获取某个头信息
$agent = Request::header('user-agent');
伪静态:
在config/route.php 中设置
// URL伪静态后缀 默认是 html
'url_html_suffix' => 'html',
//如果设置为空,则可以支持任意的 后缀
'url_html_suffix'=>''
// 多个伪静态后缀设置 用|分割
'url_html_suffix' => 'html|shtml|xml'
// 关闭伪静态后缀访问
'url_html_suffix' => false,
六、响应的使用
各种响应方式:
//响应输出一个字符串
Route::get('hello/:name', function ($name) {
return 'Hello,' . $name . '!';
});
或在控制器中
public function hello($name='thinkphp')
{
return 'Hello,' . $name . '!';
}
//输出json数据
$data = ['name' => 'thinkphp', 'status' => '1'];
return json($data);
//设置输出的状态码
json($data,201);
view($data,401);
//设置输出头信息
json($data)->code(201)->header([
'Cache-control' => 'no-cache,must-revalidate'
]);
//重定向
return redirect('http://www.thinkphp.cn');
//重定向使用 url传参
redirect((string) url('hello',['name' => 'think']));
//文件下载
// download是系统封装的一个助手函数
return download('image.jpg', 'my');
//直接下载内容
$data = '这是一个测试文件';
return download($data, 'test.txt', true);