介绍SG 全称 Superglobals,它的诞生为了方便快捷操作PHP预定义的超全局变量,用户定义的超全局变量。如果在非CLI模式,SG默认托管PHP预定义的超全局变量, 包括 $_GET,$_POST,$_COOOKIE,$_SERVER,$_FILES。使用SG类,可以大大的减少我们的PHP代码量,提高我们的开发效率。亮点功能简单,快速,轻量零拷贝访问全局变量支持自动过滤前后空格PHP trim解决操作PHP全局变量时出现未定义系列的问题 (Undefined variable, Undefined offset)安装PHP版本支持包括PHP 5.4 +PHP 7.0 +下载源码git clone https://github.com/yulonghu/sg.git在Linux系统中编译PHP SG扩展$ /path/to/php/bin/phpize$ ./configure –with-php-config=/path/to/php/bin/php-config$ make && make installphp.ini,添加、开启扩展extension=sg.so[sg]sg.enable = On重启php-fpm,就安装成功啦。提供的方法mixed sg::get(string $key [, mixed $default_value = null])bool sg::set(string $key, mixed $value)bool sg::has(string $key)bool sg::del(string $key)支持的INI配置项sg.enable = On/Offsg.auto_trim = On/Off ; Strip whitespace with PHP trim详细例子获取PHP预定义的超全局变量OLD GET METHOD (Short)NEW GET METHOD$_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’)OLD GET METHOD (Long)NEW GET METHOD$_GET’key’[‘key2’]sg::get(‘g.key.key1.key2’)$_POST’key’[‘key2’]sg::get(‘p.key.key1.key2’)$_COOKIE’key’[‘key2’]sg::get(‘c.key.key1.key2’)$_SERVER’key’[‘key2’]sg::get(’s.key.key1.key2’)$_FILES’key’[‘key2’]sg::get(‘f.key.key1.key2’)设置超全局变量bool sg::set(string $key, mixed $value)<?phpvar_dump(sg::set(’test’, ’test apple’));var_dump(sg::set(‘user.0.0’, ‘user 0 apple’));var_dump(sg::set(‘user.0.1’, ‘user 1 apple’));var_dump(sg::set(‘user.a.a’, ‘user a apple’));var_dump(sg::set(‘user.a.b’, ‘user b apple’));以上例子输出的结果:bool(true)bool(true)bool(true)bool(true)bool(true)mixed sg::get(string $key [, mixed $default_value = null])<?phpvar_dump(sg::get(’test’, ’test apple’));var_dump(sg::get(‘user’);var_dump(sg::get(’not_found’, ‘def’);var_dump(sg::get(‘user.1.2.3.4’));以上例子输出的结果:string(10) “test apple"array(2) { [0]=> array(2) { [0]=> string(12) “user 0 apple” [1]=> string(12) “user 1 apple” } [“a”]=> array(2) { [“a”]=> string(12) “user a apple” [“b”]=> string(12) “user b apple” }}string(3) “def"NULLbool sg::has(string $key)<?phpvar_dump(sg::has(’test’));var_dump(sg::has(’not_found’));以上例子输出的结果:bool(true)bool(false)bool sg::del(string $key)<?phpvar_dump(sg::del(’test’));var_dump(sg::del(‘user.0.1’));var_dump(sg::get(‘user’);以上例子输出的结果:bool(true)bool(true)array(2) { [0]=> array(1) { [0]=> string(12) “user 0 apple” } [“a”]=> array(2) { [“a”]=> string(12) “user a apple” [“b”]=> string(12) “user b apple” }}sg.auto_trim演示自动过滤前后空格的例子, 两种方式开启自动过滤。<?php// sg.auto_trim = On ; php.iniini_set(‘sg.auto_trim’, 1);function One() { var_dump(sg::set(’test’, ’ test apple ‘)); // Auto-call PHP trim}function Two() { var_dump(sg::get(’test’));}以上例子输出的结果:bool(true)string(10) “test apple"LicenseSG is open source software under the PHP License v3.01