详解thinkphp的I函数源码及运转流程和用法

本文详细介绍了ThinkPHP框架中I函数的使用方法、运行流程和源码解读。通过参数$name$获取指定来源和类型的变量,并可设置默认值、过滤函数或正则表达式。$filter$参数支持多种过滤方式,包括数组递归过滤。同时,文章还探讨了$datas$参数如何补充数据源。
摘要由CSDN通过智能技术生成

上次写了U函数,今天就把I函数的源码解读和流程图记录下来,作为分享,顺便会对使用稍微做一些解释。


一 、函数使用方法:


参数1:$name 

这个传递的是要过滤的变量名,里面可以包含数据来源方式method和数据类型type  格式为 method.name/type 例如 post.pram/s

method的方式非常多,具体最好参看源码,这里不具体说了。

要注意这里规定过滤数据的type后,会使用对应的强制转换,例如type为int,则用(int)方式进行转换。如果规定的type在I函数内不存在,则默认强制转换成字符串

type对应  a为数组    b为布尔    d为整形数     f为浮点数


参数2:$default

这个传递的是默认值,如果过滤后的变量不存在,则返回该默认值


参数3:$filter 默认为null

这个传递的是过滤的多个函数或者filter_id以及正则表达式


一个或多个函数:字符串格式多个函数用,隔开,还可以用数组方式,多个函数会循环进行过滤,且过滤的数据可以是多维数组,因为可以递归过滤,另外因为多个函数是循环进行过滤,所以过滤的顺序也是按照循环的顺序进行,所以要注意多个过滤函数的顺序放置。


正则表达式: /表达式/ 正则表达式的过滤方式不能进行递归,所以过滤的数据不能是数组


filter_id形式:整型的int类型或者数组类型都可以,最后用filter_var根据filter_id对应的过滤方式进行过滤,该种方式也是不进行递归的,所以过滤的数据不能是数组


参数4:$datas 默认为null

这个传递参数用来补充method中的data方式,是传递获取额外数据源的数据给过滤变量的


二、I函数运行流程图





三、I函数源码解读:


/**
 * 获取输入参数 支持过滤和默认值
 * 使用方法:
 * <code>
 * I('id',0); 获取id参数 自动判断get或者post
 * I('post.name','','htmlspecialchars'); 获取$_POST['name']
 * I('get.'); 获取$_GET
 * </code>
 * @param string $name 变量的名称 支持指定类型和method
 *                     格式 get.cc/d get为method cc为变量名称 d为指定数据类型
 * @param mixed $default 不存在的时候默认值
 * @param mixed $filter 参数过滤方法 可以是函数名,也可以是int类型指定filter_var里的过滤id
 * @param mixed $datas 要获取的额外数据源
 * @return mixed
 */
function I($name,$default='',$filt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值