ThinkPHP 請求與響應

zs4336發表於2019-12-12

請求物件

請求物件呼叫

1、控制器構造方法注入
2、控制器操作方法注入(無論是否繼承系統的控制器基類,都可以使用操作方法注入)
3、Facade呼叫
4、助手函式request

請求資訊

Request物件支援獲取當前的請求資訊,包括:

方法 含義
host 當前訪問域名或者IP
scheme 當前訪問協議
port 當前訪問的埠
remotePort 當前請求的REMOTE_PORT
protocol 當前請求的SERVER_PROTOCOL
contentType 當前請求的CONTENT_TYPE
domain 當前包含協議的域名
subDomain 當前訪問的子域名
panDomain 當前訪問的泛域名
rootDomain 當前訪問的根域名(V5.1.6+)
url 當前完整URL
baseUrl 當前URL(不含QUERY_STRING)
query 當前請求的QUERY_STRING引數
baseFile 當前執行的檔案
root URL訪問根地址
rootUrl URL訪問根目錄
pathinfo 當前請求URL的pathinfo資訊(含URL字尾)
path 請求URL的pathinfo資訊(不含URL字尾)
ext 當前URL的訪問字尾
time 獲取當前請求的時間
type 當前請求的資源型別
method 當前請求型別

輸入變數

  • 檢測變數是否設定

    $request->has('id','post');
  • 變數獲取

變數獲取的格式:變數型別方法('變數名/變數修飾符','預設值','過濾方法')
最常用的獲取變數型別方法如下:

方法 描述
param 獲取當前請求的變數
get 獲取 $_GET 變數
post 獲取 $_POST 變數

param方法會把當前請求型別的引數和路由變數以及GET請求合併,並且路由變數是優先的

獲取請求型別

在很多情況下面,我們需要判斷當前操作的請求型別是GET、POST、PUT、DELETE或者HEAD,一方面可以針對請求型別作出不同的邏輯處理,另外一方面有些情況下面需要驗證安全性,過濾不安全的請求

用途 方法
獲取當前請求型別 method
判斷是否GET請求 isGet
判斷是否POST請求 isPost
判斷是否PUT請求 isPut
判斷是否DELETE請求 isDelete
判斷是否AJAX請求 isAjax
判斷是否PJAX請求 isPjax
判斷是否為JSON請求 isJson(V5.1.38+)
判斷是否手機訪問 isMobile
判斷是否HEAD請求 isHead
判斷是否PATCH請求 isPatch
判斷是否OPTIONS請求 isOptions
判斷是否為CLI執行 isCli
判斷是否為CGI模式 isCgi

HTTP頭資訊

$header = $request->header();
$agent = $request->header('user-agent');

偽靜態

URL偽靜態通常是為了滿足更好的SEO效果,ThinkPHP支援偽靜態URL設定,可以通過設定url_html_suffix引數隨意在URL的最後增加你想要的靜態字尾,而不會影響當前操作的正常執行

'url_html_suffix' => 'shtml'
'url_html_suffix' => '' //支援所有的靜態字尾訪問
'url_html_suffix' => 'html|shtml|xml' // 多個偽靜態字尾設定 用|分割
'url_html_suffix' => false,// 關閉偽靜態字尾訪問

如果要獲取當前的偽靜態字尾,可以使用Request物件的ext方法。

$ext = $request->ext();

響應

大多數情況,我們不需要關注Response物件本身,只需要在控制器的操作方法中返回資料即可
如果修改配置檔案,設定:'default_return_type' => 'json'則訪問的輸出結果就變成了JSON字串

  • 響應輸出型別
    為了規範和清晰起見,最佳的方式是在控制器最後明確輸出型別(畢竟一個確定的請求是有明確的響應輸出型別),預設支援的輸出型別包括:
輸出型別 快捷方法 對應Response類
HTML輸出 response \think\Response
渲染模板輸出 view \think\response\View
JSON輸出 json \think\response\Json
JSONP輸出 jsonp \think\response\Jsonp
XML輸出 xml \think\response\Xml
頁面重定向 redirect \think\response\Redirect
附件下載(V5.1.21+) download \think\response\Download
  • 響應引數
    1、data設定響應資料
    2、code設定狀態碼
    3、header設定頭資訊(支援批量)
    4、options設定額外引數

  • 重定向
    redirect助手函式重定向以及傳參:redirect('hello',['name'=>'thinkphp']);

趁還沒掉光,趕緊給每根頭髮起個名字吧~

相關文章