TP 框架中 獲取變數 I()方法
阿新 • • 發佈:2018-12-19
ThinkPHP 中 I() 是獲取變數值,可以通過這個方法,對變數進行驗證,從而保證了資料的可靠性。 I(‘變數型別.變數名/修飾符’,[‘預設值’],[‘過濾方法’],[‘額外資料來源’])
變數型別是指請求方式或者輸入型別,包括:
變數型別 | 含義 |
---|---|
get | 獲取GET引數 |
post | 獲取POST引數 |
param | 自動判斷請求型別獲取GET、POST或者PUT引數 |
request | 獲取REQUEST 引數 |
put | 獲取PUT 引數 |
session | 獲取 $_SESSION 引數 |
cookie | 獲取 $_COOKIE 引數 |
server | 獲取 $_SERVER 引數 |
globals | 獲取 $GLOBALS引數 |
path | 獲取 PATHINFO模式的URL引數**(3.2.2新增)** |
data | 獲取 其他型別的引數,需要配合額外資料來源引數**(3.2.2新增)** |
注意:變數型別不區分大小寫。 變數名則嚴格區分大小寫。 預設值和過濾方法均屬於可選引數。 變數修飾符是3.2.3版本新增
echo I('get.id'); // 相當於 $_GET['id'] echo I('get.name'); // 相當於 $_GET['name']<span style="font-family:微軟雅黑;color:#0382ad;"><span style="font-size: 16px; line-height: 27.2000007629395px;"><strong> </strong></span></span>
// 採用htmlspecialchars方法對$_GET['name'] 進行過濾,如果不存在則返回空字串
echo I('get.name','','htmlspecialchars');
// 獲取整個$_GET 陣列
I('get.');
I('server.REQUEST_METHOD'); // 獲取 $_SERVER['REQUEST_METHOD']
param變數型別是框架特有的支援自動判斷當前請求型別的變數獲取方式,例如:
如果當前請求型別是GET,那麼等效於 $_GET[‘id’],如果當前請求型別是POST或者PUT,那麼相當於獲取 $_POST[‘id’] 或者 PUT引數id。
由於param型別是I函式預設獲取的變數型別,因此事實上param變數型別的寫法可以簡化為:
I('id'); // 等同於 I('param.id')
I('name'); // 等同於 I('param.name')
path型別變數可以用於獲取URL引數(必須是PATHINFO模式引數有效,無論是GET還是POST方式都有效),例如: 當前訪問URL地址是
echo I('path.1'); // 輸出2013
echo I('path.2'); // 輸出06
echo I('path.3'); // 輸出01<code><span style="font-family:Consolas, Liberation Mono, Courier, 微軟雅 黑;color:#c7254e;"><span style="font-size: 16px; line-height: 27.2000007629395px; white-space: nowrap; background-color: rgb(249, 242, 244);">
如果沒有在呼叫I函式的時候指定過濾方法的話,系統會採用預設的過濾機制(由DEFAULT_FILTER配置),事實上,該引數的預設設定是:
// 系統預設的變數過濾機制
'DEFAULT_FILTER' => 'htmlspecialchars'
也就說,I方法的所有獲取變數如果沒有設定過濾方法的話都會進行htmlspecialchars過濾,那麼:
// 等同於 htmlspecialchars($_GET['name'])
I('get.name');
支援多個過濾,例如:
'DEFAULT_FILTER' => 'strip_tags,htmlspecialchars'
3.2.3版本開始,I函式支援對變數使用修飾符功能,可以更好的過濾變數。 I(‘變數型別.變數名/修飾符’);
I('get.id/d');
I('post.name/s');
I('post.ids/a');
可以使用的修飾符包括:
修飾符 | 作用 |
---|---|
s | 強制轉換為字串型別 |
d | 強制轉換為整形型別 |
b | 強制轉換為布林型別 |
a | 強制轉換為陣列型別 |
f | 強制轉換為浮點型別 |
來自:tp手冊