ご覧のとおり、I メソッドは ThinkPHP の多くの 1 文字関数の新しいメンバーであり、その名前は主に利便性を高めるために使用される英語の入力 (input) に由来しています。どこでも使用できるシステム入力変数を取得します。使用形式は次のとおりです:
I('变量类型.变量名',['默认值'],['过滤方法'])
変数タイプは、リクエスト メソッドまたは入力タイプを指します。
## 注: 変数の型では大文字と小文字が区別されません。 変数名では大文字と小文字が厳密に区別されます。 デフォルト値とフィルタリング方法はオプションのパラメータです。 使用法I メソッドの使用法を説明するために、GET 変数タイプを例として取り上げます:echo I('get.id'); // 相当于 $_GET['id'] echo I('get.name'); // 相当于 $_GET['name']
echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0 echo I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串
echo I('get.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串
I('get.'); // 获取整个$_GET 数组
I('post.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_POST['name'] 进行过滤,如果不存在则返回空字符串 I('session.user_id',0); // 获取$_SESSION['user_id'] 如果不存在则默认为0 I('cookie.'); // 获取整个 $_COOKIE 数组 I('server.REQUEST_METHOD'); // 获取 $_SERVER['REQUEST_METHOD']
echo I('param.id');
http://serverName/index.php/New/2013/06/01
echo I('param.1'); // 输出2013 echo I('param.2'); // 输出06 echo I('param.3'); // 输出01
I('id'); // 等同于 I('param.id') I('name'); // 等同于 I('param.name')
変数フィルタリング
I メソッドを使用する場合、変数は実際に 2 つのフィルタを通過します。1 つ目はグローバル フィルタリングです。グローバル フィルタリングは、VAR_FILTERS パラメータを設定することで実行されます。バージョン 3.1 以降では、 VAR_FILTERS パラメータは、array_walk_recursive メソッドの再帰を使用するように変更されました。フィルタリングされています。フィルタリング メソッドの主な要件は、参照によって返される必要があるため、ここでの htmlspecialchars の設定は無効です。メソッドをカスタマイズできます。例:function filter_default(&$value){ $value = htmlspecialchars($value); }
'VAR_FILTERS'=>'filter_default'
'VAR_FILTERS'=>'filter_default,filter_exp'
VAR_FILTERS パラメータはグローバル フィルタリング メカニズムを設定し、効率に影響する再帰的フィルタリングを使用するため、I メソッドの 3 番目のステップを除き、変数を直接フィルタリングすることをお勧めします。パラメータ設定のフィルタリング方法に加えて、 DEFAULT_FILTER パラメータを設定してフィルタリングを設定することもできます。実際、このパラメータのデフォルト設定は次のとおりです:
'DEFAULT_FILTER' => 'htmlspecialchars'
I('get.name'); // 等同于 htmlspecialchars($_GET['name'])
'DEFAULT_FILTER' => 'strip_tags,htmlspecialchars'
I('get.name'); // 等同于 htmlspecialchars(strip_tags($_GET['name']))
echo I('get.name','','strip_tags'); // 等同于 strip_tags($_GET['name'])
I('post.email','',FILTER_VALIDATE_EMAIL);
I('post.email','','email');
#unsafe_raw
I('get.name','',NULL);
以上がthinkphp Iメソッドの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。