介绍全称SGSuperglobals,为方便快捷操作PHP预定义超全局变量和用户自定义超全局变量而生。如果在非CLI模式下,SG默认托管PHP预定义的超全局变量,包括常用的$_GET、$_POST、$_COOOKIE、$_SERVER、$_FILES。使用SG类可以让复杂的代码变得简单,开启自动过滤也可以减少代码量,从而提高我们的开发效率。亮点简单、快速、轻量级的全局变量零拷贝访问支持自动过滤PHPtrim前后空格解决操作PHP全局变量时未定义系列问题(Undefinedvariable、Undefinedoffset)安装PHP版本支持包括PHP5.4+PHP7.0+下载源码gitclonehttps://github.com/yulonghu/sg.gitLinux系统,编译SG扩展$/path/to/php/bin/phpize$./configure--with-php-config=/path/to/php/bin/php-config$make&&makeinstallphp.ini,添加并启用扩展extension=sg.so[sg]sg.enable=On重启php进程,安装成功。提供的方法mixedsg::get(string$key[,mixed$default_value=null])boolsg::set(string$key,mixed$value)boolsg::has(string$key)boolsg::del(string$key)支持的INI配置项sg.enable=On/Offsg.auto_trim=On/Off;用PHPtrim去掉空格详细例子获取PHP预定义超全局变量传统获取方式(简??写)新获取方式$_GET['key']sg::get('g.key')$_POST['key']sg::get('p.key')$_COOKIE['key']sg::get('c.key')$_SERVER['key']sg::get('s.key')$_FILES['key']sg::get('f.key')传统获取方式(长)获取$_GET['key']['key1']['key2']sg::get('g.key.key1.key2')$_POST['key']['key1']['key2']sg::get('p.key.key1.key2')$_COOKIE['key']['key1']['key2']sg::get('c.key.key1.key2')$_SERVER['key']['key1']['key2']sg::get('s.key.key1.key2')$_FILES['key']['key1']['key2']sg::get('f.key.key1.key2')传统获取方式(isset+trim)新获取方式$key=isset($_GET['密钥'])?修剪($_GET['key']):空;$key=sg::get('g.key');$key=isset($_POST['key'])?trim($_POST['key']):null;$key=sg::get('p.key');$key=isset($_COOKIE['key'])?修剪($_COOKIE['key']):空;$key=sg::get('c.key');$key=isset($_SERVER['key'])?修剪($_SERVER['key']):空;$key=sg::get('s.key');$key=isset($_FILES['key'])?修剪($_FILES['key']):空;$key=sg::get('f.key');(PHP7)传统获取方式(??)新获取方式$key=$_GET['key']??无效的;$键=修剪($键);$key=sg::get('g.key');$key=$_POST['key']??无效的;$键=修剪($键);$key=sg::get('p.key');$key=$_COOKIE['key']??无效的;$key=trim($key);$key=sg::get('c.key');$key=$_SERVER['key']??无效的;$key=trim($key);$key=sg::get('s.key');$key=$_FILES['key']??无效的;$键=修剪($键);$key=sg::get('f.key');通过以上整理,我们可以得出结论,传统的取值方式容易出错。如果数组的维数越深,代码复杂度就会线性上升。使用SG,这些情况变得非常简单。更新和删除方法类似。设置超全局变量boolsg::set(string$key,mixed$value)array(2){[0]=>string(12)"user0apple"[1]=>string(12)"user1apple"}["a"]=>array(2){["a"]=>string(12)"useraapple"["b"]=>string(12)"userbapple"}}string(3)"def"NULLboolsg::有(字符串$key)array(1){[0]=>string(12)"user0apple"}["a"]=>array(2){["a"]=>string(12)"useraapple"["b"]=>string(12)"userbapple"}}sg.auto_trim演示自动过滤前后空格的例子,支持两种方式开启自动过滤。为了获得最佳性能,如果满足trim条件,sg会改变原始值。避免每次取值时都重复修剪操作。
