1. 程式人生 > >TP 框架中 獲取變數 I()方法

TP 框架中 獲取變數 I()方法

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手冊