请求对象

  1. 当控制器继承了控制器基类时,自动会被注入 Request 请求对象的功能;
    1. class Rely extends Controller {
    2. public function index()
    3. {
    4. return $this->request->param('name');
    5. }
    6. }
  2. Request 请求对象拥有一个 param 方法,传入参数 name,可以得到相应的值;
    3. 如果我们不继承控制器基类,可是自行注入 Request 对象,依赖注入后面会讲;
    1. use think\Request;
    2. class Rely {
    3. public function index(Request $request)
    4. {
    5. return $request->param('name');
    6. }
    7. }
  3. 还可以通过构造方法进行注入,通过构造注入,就不需要每个方法都注入一遍;
    1. use think\Request;
    2. class Rely
    3. {
    4. protected $request;
    5. public function __construct(Request $request)
    6. {
    7. $this->request = $request;
    8. }
    9. public function index()
    10. {
    11. return $this->request->param('name');
    12. }
    13. }
  4. 使用 Facade 方式应用于没有进行依赖注入时使用 Request 对象的场合;
    1. use think\facade\Request;
    2. class Rely {
    3. public function index()
    4. {
    5. return Request::param('name');
    6. }
    7. }
  5. 使用助手函数 request()方法也可以应用在没有依赖注入的场合;
    1. class Rely {
    2. public function index()
    3. {
    4. return request()->param('name');
    5. }
    6. }

    请求信息

  6. Request 对象除了 param 方法外,还有一些请求的固定信息,如表:
    image.png
    2. 上表的调用方法,直接调用即可,无须传入值,只有极个别如果传入 true 获取完 整 URL 的功能;
    1. Request::url();
    2. // 获取完整 URL 地址 包含域名
    3. Request::url(true);
    4. // 获取当前 URL(不含 QUERY_STRING) 不带域名
    5. Request::baseFile();
    6. // 获取当前 URL(不含 QUERY_STRING) 包含域名
    7. Request::baseFile(true);
    8. // 获取 URL 访问根地址 不带域名
    9. Request::root();
    10. // 获取 URL 访问根地址 包含域名
    11. Request::root(true);