# 請求對象
當前的請求對象由`lib\Request`類負責,收到消息時初始化Request,并注入控制器中,控制器中使用依賴注入獲取。在其它場合則可以使用`lib\facade\Request`靜態類操作。
## 請求對象調用
在控制器中通常情況下有兩種方式進行依賴注入。
### 構造方法注入
~~~
<?php
namespace application\admin\controller;
use lib\Request;
class Index
{
/**
* @var \think\Request Request實例
*/
protected $request;
/**
* 構造方法
* @param Request $request Request對象
* @access public
*/
public function __construct(Request $request)
{
$this->request = $request;
}
public function index()
{
return $this->request->param('name');
}
}
~~~
> 如果你繼承了控制器基類`lib\Controller`的話,系統已經自動完成了請求對象的構造方法注入了,你可以直接使用`$this->request`屬性調用當前的請求對象。
~~~
<?php
namespace application\index\controller;
use lib\Controller;
class Index extends Controller
{
public function index()
{
$id = $this->request->param('id',0);
}
}
~~~
### 操作方法注入
~~~
<?php
namespace application\index\controller;
use lib\Controller;
use lib\Request;
class Index extends Controller
{
public function index(Request $request)
{
return $request->param('name');
}
}
~~~
無論是否繼承系統的控制器基類,都可以使用操作方法注入。
## Facade調用
在沒有使用依賴注入的場合,可以通過`Facade`靜態代理機制來靜態調用請求對象的方法
use lib\facade\aaa
~~~
<?php
namespace application\index\controller;
use lib\facade\Request;
class Index extends Controller
{
public function index()
{
return Request::param('name');
}
}
~~~