本文已参与「新人创作礼」活动,一起开启掘金创作之路。
I函数的作用是获取系统变量,必要时还可以对变量值进行过滤及强制转换
I(‘变量类型.变量名/修饰符’,[‘默认值’],[‘过滤方法或正则’],[‘额外数据源’])
在php中获取变量值得方法很多, G E T [ ′ 变 量 名 ′ ] , _GET['变量名'],GET[′变量名′],_POST[‘变量名’],S E S S I O N [ ′ 变 量 名 ′ ] , _SESSION['变量名'],SESSION[′变量名′],_COOKIE[‘变量名’],_GET[‘id’] 来获取,在thinkphp中我们可以用 I(‘get.id’) 来获取。同样的, $_POST[‘id’] 就用 I(‘post.id’) 取代,I 函数的语法格式中的变量类型就是指的像 get 和 post 之类的请求方式,类似的变量类型还包括:
如果要获取的变量类型是get、post 或 put,可以统一用 param 变量类型,param 变量类型是框架特有的支持自动判断当前请求类型的变量获取方式,例如:I(‘param.id’) ,如果当前请求类型是GET,那么等效于 _POST[‘id’] 或者 PUT参数id。而事实上当 I 函数获取的变量类型是param时变量类型可以省略直接写为:I(‘变量名’) ,那么 G E T [ ′ i d ′ ] 、 _GET['id']、GET[′id′]、_POST[‘id’] 都可以简写为:I(‘id’) 。但当变量类型为其他类型时就不能这么简写,比如 I(‘cookie.id’)、I(‘session.id’)就不能简写。
I 函数的变量类型不区分大小写,但变量名严格区分大小写,比如 I(‘get.id’) 可以写成 I(‘GET.id’),但不能写成 I(‘get.ID’)
二、变量过滤
I函数本身默认过滤机制是htmlspecialchars,因为在配置文件中配置了:
// 系统默认的变量过滤机制
‘DEFAULT_FILTER’ => ‘htmlspecialchars’
所以 I(‘post.变量名’) 就等同于 htmlspecialchars($_POST(‘变量名’)),如果 I 函数自身带了过滤方法,则用自身带的过滤机制过滤变量,比如:
I(‘post.email’,‘请输入正确的email地址’,FILTER_VALIDATE_EMAIL);
三、变量修饰符
limit = I(‘param.limit’,15);
还有一种方式
p a g e = I ( ′ p a g e ′ , 1 ) − 1 ; − > l i m i t ( page=I('page',1)-1; ->limit(page=I(′page′,1)−1;−>limit(pageSize * page , p a g e S i z e ) 如 果 前 台 要 限 制 30 , 50 条 之 类 的 , 那 么 就 要 传 一 个 l i m i t 了 , 那 么 就 要 − > l i m i t ( pageSize) 如果前台要限制30 ,50条之类的,那么就要传一个limit了,那么就要 ->limit(pageSize)如果前台要限制30,50条之类的,那么就要传一个limit了,那么就要−>limit(this->pageSize * page , orderId = I(‘param.order_id’, ‘’);
//问题类别 问题类别:1识别错误,2数量错误,3其他
$question_type = I(‘param.question_type’, 0);
传入时间的两种写法
第一种
$end_time=$end_time."23:59:59";
$whereStr.=" a.add_time > '{$start_time}' and a.add_time < '{$end_time}' and";
}
第二种
if(!empty(I('start_date')) || !empty(I('end_date'))){
$end_time = I('end_date') . " 23:59:59";
$orderCondtion['add_time'] = array(array('EGT', I('start_date') . ' 00:00:00'), array('ELT', $end_time));
}
如果是字符串拼接的话,会涉及到一个and问题
那么就要过滤一下了
w h e r e S t r = r t r i m ( whereStr=rtrim(whereStr=rtrim(whereStr, ’ and’);