## 請求組件
Request服務是用于獲取請求數據與對請求終端設備進行判斷的服務。
其他產品也可以使用該組件,請登錄 [GITHUB](https://github.com/houdunwang/request) 查看源代碼與說明文檔。
[TOC]
## 常用常量
組件會定義一些常量
| 常量 | 說明 |
| --- | --- |
| IS_GET | GET請求 |
| IS_POST | POST請求 |
| IS_DELETE | DELETE請求 |
| IS_PUT | PUT請求 |
| IS_AJAX | 異步請求 |
| IS_WECHAT | 微信客戶端請求 |
| \_\_ROOT\_\_ | 不包含入口文件的網址 |
| \_\_URL\_\_ | 當前請求完整URL,開啟偽靜態時和__ROOT__一樣的 |
| \_\_HISTORY\_\_ | 來源地址 |
## 請求類型判斷
#### 函數判斷請求類型
判斷類型支持 get/post/delete/put/ajax/mobile 類型的判斷
```
Request::isMethod('post');
```
#### 判斷是否為Ajax請求
判斷類型支持 get/post/delete/put/ajax/mobile 類型的判斷
```
Request::isAjax();
```
#### 判斷是否為手機訪問
```
Request::isMobile();
```
#### 檢測是否為微信客戶端
```
Request::isWeChat();
```
## https請求檢測
```
Request::isHttps();
```
## 判斷請求來源是否為本站域名
```
Request::isDomain();
```
## 當前請求地址
```
Request::uri();
//或使用函數
request_url();
```
## 獲取主機名
```
Request::getHost($_SERVER['HTTP_REFERER']);
```
## 網站域名
```
Request::domain();
//或使用函數
domain_url();
//或
root_url();
```
## 有入口文件的鏈接
根據偽靜態配置 Config::get('http.rewrite') , 添加帶有入口文件的鏈接
```
Request::web();
//或使用函數
web_url();
//必須包含入口文件
web_url(true);
```
## 來源地址
```
Request::history();
//或使用函數
history_url();
```
## 獲取請求頭信息
```
getallheaders();
```
## 獲取請求類型
```
Request::getRequestType();
#返回值為 GET/POST/DELETE/PUT 之一
```
## 獲取數據
query 方法支持點語法操作,支持多層數據獲取。第一個字符為數據類型。
```
Request::query('post.data.id');
```
## 不存在時返回默認值
返回默認值指當數據不存在時返回設置的值,并不會更改原數據。
以下示例當 $_GET['id']不存在時返回默認值9
```
Request::query('get.id',9);
```
## 對數據函數處理
query 方法的第三個參數是一個函數名組成的數組,將對獲取的數據通過函數進行處理后返回。
```
Request::query('get.id',0,['intval','trim']);
```
## 根據類型獲取
系統支持使用 get,post,request,server,session,cookie,global獲取同名的php全局變量數據。
#### 獲得所有 $_GET 數據
```
Request::get('cid',0,'intval');
//獲取$_GET['cid']值 ,存在時使用intval函數處理,不存在時定義為0
```
#### 獲得所有 $_POST 數據
```
Request::post();
```
#### 獲得POST變量并對數據執行函數處理
```
Request::post('webname',NULL,['htmlspecialchars','strtoupper']);
```
#### 獲得POST變量, 不存時返回默認值
```
Request::post('webname','后盾網');
```
#### 獲得 $_SESSION['uid'] 值,并執行intval方法
```
Request::session('uid',0,'intval');
```
#### 獲得 $_COOKIE['cart'] 值
```
Request::cookie('cart');
```
## q 函數
q函數是 [Request 組件](http://www.hmoore.net/houdunwang/hdphp3/215229) 的函數調用方式,下面通過實例講解他的使用方法。
#### 獲取$_REQUEST
```
q('cid');
```
#### 參數不存在時設置默認值
```
q('cid',1);
```
#### 對變量值應用函數
```
q('cid',1,'intval');
```
#### 執行多個函數
```
q('webname','houdunwang',['ucfirst','strtoupper']);
```
## 設置請求數據
使用set 方法可以為$_GET,$_POST,$_REQUEST,$_SERVER設置數據,支持點語法設置多層數據,第一個參數為數據類型。
以下代碼設置GET['a']['b'] 變量為后盾人
```
Request::set('get.a.b','后盾人');
```
## 獲取客戶端IP地址
```
Request::ip();
//或使用函數獲取
clientIp();
```
## 操作$_GET參數并轉為字符串
當前$_GET生成的查詢參數,如果當前$_GET中包含cid=1和name=hdphp以上代碼結果為
~~~
Request::getToStr();
//cid=1&name=hdphp
~~~
以下代碼在現在$_GET參數中添加值并轉為字符串,如果當前$_GET中包含cid=1以上代碼生成結果為
~~~
Request::getToStr('name','hdphp');
//cid=1&name=hdphp
~~~
刪除一個參數,如果當前$_GET中包含cid=1和name=hdphp以上代碼結果為
~~~
Request::getToStr('cid');
//name=hdphp
~~~
- 文檔已經遷移到后盾人
- 介紹
- 框架特性
- 開發規范
- 許可協議
- 作者向軍
- 安裝框架
- 更新框架
- 基礎
- 入口文件
- 應用配置
- 優雅鏈接
- 目錄結構
- 系統常量
- 自動加載
- 應用密鑰
- 系統函數
- CSRF保護
- 依賴注入
- 跨域訪問
- 配置
- 配置文件
- 基本功能
- 擴展配置
- c 函數
- 控制器
- 定義聲明
- 基本使用
- 相關函數
- 響應消息
- 路由
- 基礎知識
- 基礎路由
- 路由參數
- 參數檢測
- 依賴注入
- 控制器
- 分組路由
- RESTful
- 別名路由
- 數據
- 配置相關
- 核心操作
- 查詢構造器
- 日志記錄
- 分頁處理
- 事務處理
- 函數相關
- 數據庫
- 數據遷移
- 數據填充
- 模型
- 定義模型
- 模型動作
- 模型驗證
- 自動完成
- 自動過濾
- 字段保護
- 數據填充
- 多表關聯
- 分頁處理
- 倉庫
- 數據倉庫
- 查詢規則
- 視圖
- 基礎知識
- 模板配置
- 模板文件
- 分配數據
- 系統標簽
- 擴展標簽
- 緩存模板
- 模板繼承
- 視圖函數
- widget
- vue組件
- 中間件
- 中間件
- 緩存
- 基本操作
- 文件緩存
- 數據表緩存
- 服務
- 服務容器
- 定制服務
- 相關函數
- 請求
- 基本使用
- 請求擴展
- 測試
- 基礎知識
- 基本使用
- HTTP測試
- 調試
- 調試模式
- 日志管理
- 組件
- 多語言
- 響應處理
- Cookie
- Session
- 驗證碼
- XML
- 自動驗證
- 文件處理
- 壓縮解壓
- RBAC
- 數組增強
- 分頁管理
- 圖像處理
- 生成靜態
- 加密解密
- 字符串
- 數據集合
- 工具服務
- 目錄操作
- 郵件發送
- CURL
- QQ登錄
- 數據備份
- 購物車
- 日志處理
- 命令組件
- 二維碼
- 后盾云
- 日期處理
- 阿里
- 支付寶
- 阿里云直播
- 阿里云短信
- 阿里云郵件
- 阿里云OSS
- SOCKET
- 啟動與關閉
- 前端
- 微信