> ## 檢測變量是否被設置
```
方法一:
Request::instance()->has('id','get');
Request::instance()->has('name','post');
方法二:
input('?get.id');
input('?post.name');
```
> ## 獲取超全局變量的值
> ### 變量類型方法('變量名/變量修飾符','默認值','過濾方法')
|方法|描述|
|---|---|
|param|獲取當前請求的變量|
|get|獲取 $_GET 變量|
|post |獲取 $_POST 變量|
|put |獲取 PUT 變量|
|delete |獲取 DELETE 變量|
|session| 獲取 $_SESSION 變量|
|cookie |獲取 $_COOKIE 變量|
|request |獲取 $_REQUEST 變量|
|server |獲取 $_SERVER 變量|
|env |獲取 $_ENV 變量|
|route |獲取 路由(包括PATHINFO) 變量|
|file |獲取 $_FILES 變量|
```
第一種獲取方法:
// 獲取單個變量(其他方法一樣)
Request::instance()->param('name');
// 獲取所有變量(經過過濾)(其他方法一樣)
Request::instance()->param();
// 獲取所有變量(原始數據)(其他方法一樣)
Request::instance()->param(false);
// 獲取所有變量(包含上傳文件)
Request::instance()->param(true);
第二種獲取方法:
// 獲取單個變量(其他方法一樣)
input('param.name');
// 獲取所有變量(其他方法一樣)
input('param.');
或者 // 因為input默認就是采用的param方式獲取,所以可以這樣簡寫
input('name');
input('');
```
>## 對請求變量進行過濾與設置不過濾(不要相信任何用戶傳遞過來的數據)
```
第一種方式:在框架配置文件中添加默認過濾規則
// 默認全局過濾方法 用逗號分隔多個
'default_filter' => 'htmlspecialchars',
第二種方式:使用Request對象進行過濾
// 使用PHP內置的方法
Request::instance()->filter('htmlspecialchars'); // 過濾請求對象
Request::instance()->filter(['strip_tags','htmlspecialchars']), // 數組傳入多個過濾方法
Request::instance()->param('username','','strip_tags,strtolower'); // 獲取param變量 并依次調用strip_tags、strtolower函數過濾
Request::instance()->get('name','','htmlspecialchars'); // 獲取get變量 并用htmlspecialchars函數過濾
Request::instance()->post('name','','org\Filter::safeHtml'); // 獲取post變量 并用org\Filter類的safeHtml方法過濾
// 使用PHP內置的Filter ID進行過濾(該方式如果不符合會返回false,所以需要和默認值配合使用)
Request::instance()->post('email','',FILTER_VALIDATE_EMAIL);
還可以簡寫
Request::instance()->post('email','','email');
// 對變量不進行過濾,直接獲得原始數據
Request::instance()->get('name','',null); // 獲取get變量 并且不進行任何過濾 即使設置了全局過濾
```
> ## 獲取請求的部分變量
```
// 只獲取id和name變量
Request::instance()->only('id,name');
Request::instance()->only(['id','name']);
// 只獲取GET請求的id和name變量
Request::instance()->only(['id','name'],'get');
// 只獲取POST請求的id和name變量
Request::instance()->only(['id','name'],'post');
```
> ## 排除請求的部分變量
```
// 排除id和name變量
Request::instance()->except('id,name');
Request::instance()->except(['id','name']);
// 排除GET請求的id和name變量
Request::instance()->except(['id','name'],'get');
// 排除POST請求的id和name變量
Request::instance()->except(['id','name'],'post');
```
>## 變量修飾符(如果不加默認為/s,如果獲取的變量是數組一定要加/a才能正確獲取)
>### input('變量類型.變量名/修飾符');
>### Request::instance()->變量類型('變量名/修飾符');
```
input('get.id/d');
Request::instance()->get('id/d');
```
|修飾符| 作用|
|---|---|
|s |強制轉換為字符串類型|
|d |強制轉換為整型類型|
|b |強制轉換為布爾類型|
|a |強制轉換為數組類型|
|f |強制轉換為浮點類型|
- 運行環境需求
- tp5目錄結構
- 命令行生成代碼
- 路由
- 請求
- 獲取請求信息
- 超全局變量獲取
- 更改請求變量的值
- 判斷是否為某種請求類型
- 偽裝表單請求類型
- HTTP頭部信息
- 偽靜態
- 向請求對象中注入自定義的屬性和方法
- 簡單的傳參可以使用參數綁定
- 依賴注入(將對象注入方法作為參數)
- 將請求的數據進行緩存
- 控制器
- 一個控制器代碼示例
- 空控制器
- 資源控制器
- 模型
- 一個模型代碼示例
- 模型的四種調用方法
- 控制器中調用模型添加數據
- 控制器中調用模型更新數據
- 控制器中調用模型刪除數據
- 控制器中調用模型查詢數據
- 模型中使用聚合函數
- 獲取器
- 修改器
- 自動寫入時間戳
- 只讀字段
- 軟刪除
- 自動類型轉換
- 數據自動完成
- 查詢范圍
- 數組方式訪問和轉換為數組
- json序列化
- 模型的事件
- 關聯模型
- 一對一關聯
- 一對多關聯
- 遠程一對多(跨表關聯)
- 多對多關聯
- 多態關聯
- 關聯預載入N+1次查詢變2次
- 延遲預載入
- 關聯統計
- 視圖與模板
- 模板引擎配置
- 分配數據到模板
- 輸出替換
- 模板中輸出變量
- 模板中輸出系統變量(配置常量超全局)
- 模板中輸出請求信息
- 模板中使用php函數
- 輸出到模板中的變量指定默認值
- 模板中進行運算
- 原樣輸出代碼不解析
- 模版中注釋
- 模板布局與繼承
- 文件包含
- 內置標簽
- 循環輸出標簽
- 比較標簽
- 條件判斷標簽
- 引入資源文件(js-css)
- 使用原生php
- 在模板中定義變量和常量
- 助手函數
- 常用功能
- 表單驗證
- 驗證器的定義
- 自定義驗證規則
- 速查表
- 系統默認根命名空間
- 系統路徑常量
- 請求變量
- URL請求和信息方法