随心的博客

好记性不如个烂笔头,随心记录!

返回顶部

TP6中请求和响应

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);

 

 

 

 

posted @ 2021-11-05 13:22  yangphp  阅读(1922)  评论(0编辑  收藏  举报