Skip to content

Instantly share code, notes, and snippets.

@wmydz1
Last active November 14, 2017 15:02
Show Gist options
  • Save wmydz1/51852169254cc33c2192a33d80667371 to your computer and use it in GitHub Desktop.
Save wmydz1/51852169254cc33c2192a33d80667371 to your computer and use it in GitHub Desktop.

ThinkPHP函数详解:I方法

浏览:315564 发布日期:2013/06/01 分类:文档教程 关键字: 函数 ThinkPHP的I方法是3.1.3版本新增的,如果你是之前的3.*版本的话,可以直接参考使用3.1快速入门教程系列的变量部分。 概述 正如你所见到的一样,I方法是ThinkPHP众多单字母函数中的新成员,其命名来自于英文Input(输入),主要用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如 下:
I('变量类型.变量名',['默认值'],['过滤方法']). 变量类型是指请求方式或者输入类型,包括:
变量类型 含义. get 获取GET参数.
post 获取POST参数. param 自动判断请求类型获取GET、POST或者PUT参数. request 获取REQUEST 参数. put 获取PUT 参数
session 获取 $_SESSION 参数. cookie 获取 $_COOKIE 参数. server 获取 $_SERVER 参数. globals 获取 $GLOBALS参数. 注意:变量类型不区分大小写。
变量名则严格区分大小写。
默认值和过滤方法均属于可选参数。

用法 我们以GET变量类型为例,说明下I方法的使用:

    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 数组

用同样的方式,我们可以获取post或者其他输入类型的变量,例如:

    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'] 

param变量类型是框架特有的支持自动判断当前请求类型的变量获取方式,例如:

echo I('param.id');

如果当前请求类型是GET,那么等效于 $_GET['id'],如果当前请求类型是POST或者PUT,那么相当于获取 $_POST['id'] 或者 PUT参数id。 并且param类型变量还可以用数字索引的方式获取URL参数(必须是PATHINFO模式参数有效,无论是GET还是POST方式都有效),例如: 当前访问URL地址是

    http://serverName/index.php/New/2013/06/01 

那么我们可以通过

    echo I('param.1'); // 输出2013
    echo I('param.2'); // 输出06
    echo I('param.3'); // 输出01

事实上,param变量类型的写法可以简化为:

    I('id'); // 等同于 I('param.id')
    I('name'); // 等同于 I('param.name')
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment