## 控制器中Request类的使用
我们先看一下TP5控制器的构造函数源码
~~~
/**
* 构造方法
* @param Request $request Request对象
* @access public
*/
public function __construct(Request $request = null)
{
if (is_null($request)) {
$request = Request::instance();
}
$this->view = View::instance(Config::get('template'), Config::get('view_replace_str'));
$this->request = $request;
// 控制器初始化
$this->_initialize();
// 前置操作方法
if ($this->beforeActionList) {
foreach ($this->beforeActionList as $method => $options) {
is_numeric($method) ?
$this->beforeAction($options) :
$this->beforeAction($method, $options);
}
}
}
~~~
我们可以看出,在控制器类初始化时候注入了 Request 类,并将 Request 类赋值到 $this->request ,
> 完全开发手册中也有提到,继承系统控制器类可以直接调用 Request 类
OK,那我们就直接来看看 Request 类如果在控制器的使用
> 题外话我们要改掉使用助手函数的习惯,(包括我自己,以前的代码中也是有些助手函数,我们一起改正吧),特别是 Request 类助手函数重复使用率非常高,
另:request类详细说明请参见 完全开发手册 http://www.kancloud.cn/manual/thinkphp5/118042
那么,在控制器中然后快速获取各类参数值呢?
我自己写例子了
~~~
//获取所有get值
$this->request->get();
//获取指定name名称的get值
$this->request->get('name');
//获取所有post值
$this->request->post();
//获取指定name名称的post值
$this->request->post('name');
//获取所有参数值(get post都可以)
$this->request->param();
//获取指定name名称的参数值(get post都可以)
$this->request->param('name');
~~~
> Request 类的值很多,可能常用的就是get post,其实用Request 类还可以获取服务器变量 session cookie
> 变量类型方法包括:
> | 方法 | 描述 |
> | --- | --- |
> | param | 获取当前请求的变量 |
> | get | 获取 $_GET 变量 |
> | post | 获取 $_POST 变量 |
> | put | 获取 PUT 变量 |
> | delete | 获取 DELETE 变量 |
> | session | 获取 $_SESSION 变量 |
> | cookie | 获取 $_COOKIE 变量 |
> | request | 获取 $_REQUEST 变量 |
> | server | 获取 $_SERVER 变量 |
> | env | 获取 $_ENV 变量 |
> | route | 获取 路由(包括PATHINFO) 变量 |
> | file | 获取 $_FILES 变量|
还有,我们也经常使用request类判断 请求类型
~~~
$this->request->isGet();
$this->request->isPost();
$this->request->isAjax();
~~~
更详尽的参照完全开发手册吧