# Request 請求類
[TOC]
Request 對象的作用是與客戶端交互,收集客戶端form、cookies、或收集服務器的環境變量。如果要獲取當前的請求信息,可以使用`\think\Request`類,通過`Request`對象完成全局輸入變量的檢測、獲取和安全過濾,支持包括`$_GET`、`$_POST`、`$_REQUEST`、`$_SERVER`、`$_SESSION`、`$_COOKIE`、`$_ENV`等系統變量,以及`$_FILES`。
## Request的助手函數
使用Request方法很多,但是個人感覺助手函數比較方便使用。具體信息詳見手冊 `請求`。
`param`系統推薦使用方法獲取當前請求變量, 該方法最大的優勢是讓你不需要區分當前請求類型而使用不同的全局變量或者方法, 并且可以滿足大部分的參數需求。
param用法如下:
```
<?php
$request = request();
$request->param(['要獲取的值'],['默認值'],['過濾的方法']);
?>
```
`param`方法 能夠獲取所有參數
`get`方法 只能獲取`?`后面的請求字符串的參數(也就是兼容模式傳參)
`route`方法 只能獲取到`?`前面的路由中的參數
注意:在URL中`?`前面的屬于路由用`/`傳遞參數,用get無法獲取參數
## 變量過濾
框架沒有設置過濾的規則,如果需要設置變量的過濾規則,可以在application/config.php配置文件里面設置全局的規律規則
設置變量過濾規則:
```
// 默認全局過濾方法 用逗號分隔多個
'default_filter' => 'htmlspecialchars,trim'
```
request設置全局的變量規則:
```
$request = request();
$request->filter('trim');
```
獲取變量設置過濾變量規則:
```
$request = request();
$request->param(['要獲取的值'],['默認值'],['過濾的方法']);
```
## 變量修飾符
`input param`函數支持對變量使用修飾符功能,可以更好的過濾變量
基本語法:
```
input('變量類型.變量名/修飾符');
Request::instance()->變量類型('變量名/修飾符');
input('post.ids/a'); //獲取的數據現在的類型是數組了
Request::instance()->get('id/d'); //獲取的數據現在是整型了
```
變量修飾符,就是說我們通過某一個方法接收變量的時候,傳參的值可是浮點型可能是數組也可能是別的類型等,我們利用變量修飾符就可以給這個接受的值做申明。比如說接受了一個id它是字符串的(**默認情況下就是/s 字符串**),我們可以把它申明成數組 `id/a`。
如果你要獲取的數據為數組,請一定注意要加上 `/a` 修飾符才能正確獲取到
| 修飾符 | 作用 |
| --- | --- |
| s | 強制轉換成字符串 |
| a | 強制轉換成數組 |
## input助手函數
input函數默認就采用PARAM變量讀取方式,param與input用哪個都可以看個人習慣。
```
input('?get.id');
input('?post.name');
```
## 自動輸出
在我們`return`返回信息時,Tinkphp默認的自動響應輸出會自動判斷是否 `AJAX`請求, 如果是的話會自動去配置文件尋找 `default_ajax_return` 配置的輸出類型
配置輸出類型:
```
'default_return_type' => 'json';
return $data;
```
## 手動輸出
```
return json($data,[code 200],[header信息]);
```
- 基礎
- 安裝PHP
- 語言基礎
- 變量
- 變量操作
- 超全局數組變量
- 變量作用域
- 變量傳值方式
- 常量
- 數據類型
- 運算符
- 流程控制
- 文件包含
- 錯誤處理
- 字符串操作
- 數組
- 函數
- 進階
- 面向對象
- 提高
- TP
- 安裝項目
- 框架基礎知識
- 命令創建模塊
- URL生命周期
- 路由操作
- Request請求類
- 參數綁定
- 依賴注入
- 模板操作
- 查詢操作
- 添加操作
- laravel
- ☆目錄結構
- CSRF攻擊
- ☆路由
- ☆控制器
- ☆請求類
- ☆視圖
- ☆模板繼承
- ☆表單驗證
- ☆DB類
- ☆模型
- ☆數據庫遷移
- 類型、修飾、索引
- ☆數據填充
- ☆數據分頁
- ☆session處理
- ☆中間件
- ☆緩存操作
- ☆文件上傳
- ☆接口操作
- ☆擴展插件
- restful
- 工作
- 工作記錄
- QQ登錄
- 新浪登錄
- 微信登錄
- sphinx搜索
- 數據庫
- MySQL
- ☆數據庫操作
- ☆數據表操作
- ☆數據的操作
- 待修改
- 優化
- 存儲引擎選擇
- 列表類型選擇
- 范式
- 慢日志查詢
- 精準時間記錄查詢
- 計劃任務 explain
- 索引
- 索與事務
- 查詢緩存
- 存儲過程
- 觸發器
- 分區
- 分表
- sphinx
- 讀寫分離
- 搜索優化
- 網站靜態化
- Memcache
- Mongodb
- Readis
- php使用redis
- 服務器
- Linux
- 目錄結構
- 常用命令
- VIM編輯器
- 用戶與用戶組
- 權限管理
- 運行級別
- 網絡模式
- ssh
- 軟件安裝
- 計劃任務
- Ubuntu
- 編譯PHP7.3
- 編譯MySQL
- 編譯Nginx
- apache虛擬機配置
- 安裝composer
- Nginx
- Git