Thinkphp5基礎——10 請求引數

TimChen666發表於2019-01-18

獲取請求引數


獲取請求引數的方式從型別上看,分為1. 請求物件獲取2. 助手函式直接獲取 兩種形式。




請求物件獲取


官方解釋

當前的請求物件由think\Request類負責,在很多場合下並不需要例項化呼叫,通常使用依賴注入即可。

在其它場合(例如模板輸出等)則可以使用think\facade\Request靜態類操作。



獲取方式


1. 繼承了think\Controller

直接使用$this->request()->param('請求引數key')



2. 依賴注入


1)建構函式注入

步驟:

1)引用think\Request類;

2)建構函式依賴注入,並將think\Request例項儲存為類屬性;

3)index操作方法呼叫類屬性獲取例項物件,再呼叫param()方法獲取請求引數。



use think\Request;

class Index 
{
	protected $request;
	
	public function __construct(Request $request)
	{
	  $this->request = $request;
	}
    
	public function index()
	{
	  return $this->request->param('name');
	}  
	
}  



2)操作方法注入

步驟:

1)引用think\Request類;

2)操作方法依賴注入,直接使用think\Request例項的方法獲取請求引數。


use think\Request;

class Index 
{
    
	public function index(Request $request)
	{
	  return $request->param('name');
	}    
}

#### 擴充套件部分
實際上,我們還可以直接使用 $request->引數key 的形式直接獲取變數。




3. Facade呼叫

Facade可以讓類無需例項化而直接進行靜態方式呼叫。

實際上Facade做的事情就是建立一個代理類,在呼叫Facade的時候, 間接呼叫原來的類,然後使用類方法。


步驟:

1)引用think\facade\Request類,此時Request實際上就是think\Request類,並且可以靜態呼叫原來的類方法;

2)靜態呼叫param()方法獲取請求引數。


<?php

use think\facade\Request;

class Index 
{
    
	public function index()
	{
	  return Request::param('name');
	}    
}




4.助手函式

request()->param('引數key')

class Index extends Controller
{

	public function index()
	{
	  return request()->param('name');
	}
}





助理函式獲取

input('引數key')

input('param.引數key')

input('post.')    // 獲取全部post變數

input('get.')     // 獲取get全部變數 






請求引數繫結

引數繫結是把當前請求的變數作為操作方法(也包括架構方法)的引數直接傳入,引數繫結並不區分請求型別。


舉個例子,路由裡面定義下面的路由:
Route::get('api/:version/order/:id','api/:version.Order/getOrderDetail');

上面的路由表示它將接收一個id引數,並且將會把這個id引數傳到getOrderDetail()方法。

再來看看getOrderDetail()方法:

public function getOrderDetail($id){

	return '我是路由傳過來的id引數:' . $id;
}

這便是所謂的引數繫結,按照變數名進行引數繫結的引數必須和URL中傳入的變數名稱一致,但是引數順序不需要一致。

相關文章