无限星辰工作室-客户无限互联网动力之源

标题: discuz获取超全局数组值的函数getgpc($k, $t='GP') [打印本页]

作者: crx349    时间: 2018-9-3 12:54
标题: discuz获取超全局数组值的函数getgpc($k, $t='GP')

函数:getgpc($$k, $$t='GP')

  参数:$$k 超全局数组键;$$t 代表超全局数组$$_POST或$$_GET

  位置:/install/include/install_function.php

  作用:获取预定义超全局数组$$_GET、$$_POST、$$_COOKIE和$$_REQUEST对应的键为$$k的值。


  一般在我们提交表单(假设以POST提交表单为例)后,我们完全可以通过$$_POST[$$k]来获取键$$k对应的值,这里为什么要单独声明一个函数呢?因为,这样处理起来简单,而且,统一使用一个函数来处理这四个超全局数组,增加代码可读性,减少出错概率,一句话就是为了方便。


代码分析开始:

  1. 把参数$$t 转化为大写:

$$t = strtoupper($$t);

    这样做的好处是,如果用户在调用这个函数时,写一个小写的也可以转化为大写,不至于引起错误。

  2. 通过switch来处理参数$$t对应的全局数组:

  1. switch($t) {
  2.                 case 'GP' : isset($_POST[$k]) ? $var = &$_POST : $var = &$_GET; break;
  3.                 case 'G': $var = &$_GET; break;
  4.                 case 'P': $var = &$_POST; break;
  5.                 case 'C': $var = &$_COOKIE; break;
  6.                 case 'R': $var = &$_REQUEST; break;
  7.         }
复制代码

    a) 如果在调用函数时,使用的是默认值'GP',则判断值$$_POST[$$k]是不是已经设置,若设置了,则取$$_POST的地址给变量$$var,否则,把$$_GET的地址赋给$$var。

    b) 下面四个处理方式,跟上面类似,唯一不同是下面四个是单独处理$$t的值,当$$t = 'G'时,把$$_GET的地址赋给$$var,其它几个处理方式跟这个完全一样。


疑问:

  这里可能有人会问,为什么非要使用默认的$$t='GP',如果改为$$t='G'或其它的,那么,不是代码更少一行了吗?其实,这样写的目的完全是为了方便,如果我们把函数第二个参数改为$$t='G',当用户在调用这个函数时,若使用的是post提交过来的数组,那么,第二个参数就必须写上小写'p'或大写'P'了,即getgpc($$k,'p'),但是,使用$$t='GP'默认参数的话,完全不用写第二个参数,即getgpc($$k)这样就可以了,这样就省事了。


  3. 返回键$$k对应的值$$var[$$k],若这个值没有设置,那么,返回null,代码如下:

return isset($$var[$$k]) ? $$var[$$k] : null;

总结:

  在我们通过php程序开发网站后台时,经常会用到类似的方法来处理一下几个常用的超全局数组,从这里我们也可以看出面向对象的封装性,给我们后面写代码时带来很多方便。







欢迎光临 无限星辰工作室-客户无限互联网动力之源 (https://xmspace.net/) Powered by Discuz! X3.4