找回密码
 立即注册

QQ登录

只需一步,快速开始

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



本教程由无限星辰工作室CRX349独家整理和提供,转载请注明地址,谢谢。本文地址:https://xmspace.net/thread-644-1-1.html
无限星辰工作室  好集导航 Discuz全集下载  星辰站长网  集热爱361  一品文学  手机小游戏合集   海外空间网 星辰api  星辰支付二维码管理平台 LOT智能硬件聚合平台 阿里云服务器 腾讯云服务器
服务Discuz!建站|DiscuzQ配置|二开|小程序|APP|搬家|挂马清理|防护|Win/Linux环境搭建|优化|运维|
服务理念:专业 诚信 友好QQ842062626 服务项目 Q群315524225

发表于 2018-9-3 12:54:28 | 显示全部楼层 |阅读模式

回复 | 使用道具 举报

该帖共收到 0 条回复!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

美图秀

    • 自建远程桌面服务器 rustdesk
    • Discuz!x3.4 账号保镖 自动冻结账号无效解
    • PVE换主板后 网络丢失解决方法
    • Kvm 虚拟机迁移到PVE里面
    • Discuz!x3,4 阿里云DCDN配置获取客户端ip
拖动客服框
Online Service
点击这里给我发消息
点击这里联系我们
微信扫一扫
在线客服
快速回复 返回顶部 返回列表