superglobals:PHP预定义的超全局变量管理扩展
SG的全称是Superglobals。它的诞生是为了方便快捷地处理PHP预定义的超全局变量和用户定义的超全局变量。
如果在非 CLI 模式下,SG PHP 默认托管预定义的超级全局变量,包括 $_GET、$_POST、$_COOKIE、$_SERVER、$_FILES。
使用SG类可以使复杂的代码变得更简单。启用自动过滤还可以减少代码量,从而提高我们的开发效率。
高亮功能
- 简单、快速、轻量
- 全局变量零拷贝访问
- 支持自动过滤PHP修剪前后的空格PHP变量未定义(未定义变量、未定义偏移)的问题
安装
PHP版本支持包括
- PHP 5.4 +
- PHP 7.0 +❀❀
$ /path/to/php/bin/phpize $ ./configure --with-php-config=/path/to/php/bin/php-config $ make && make install 复制代码
php。 ini,add,开启扩展
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/Off sg.auto_trim = On/Off ; Strip whitespace with PHP trim复制代码
详细示例
获取 PHP 预定义的超全局变量
OLD GETHO METHO❝W D $_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') 旧获取方法 (Lang) 新获取方法 $_GET['key']['key1']['key2'] sg ::get('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 + 修剪) 新获取方法 $key = isset($_GET['key']) ?修剪($_GET['key']) : null; $key = sg::get('g.key'); $key = isset($_POST['key']) ?修剪($_POST['key']) : null; $key = sg::get('p.key'); $key = isset($_COOKIE['key']) ?修剪($_COOKIE['key']) : null; $key = sg::get('c.key'); $key = isset($_SERVER['key']) ?修剪($_SERVER['key']) : null; $key = sg::get('.key'); $ key = isset($_FILES['key']) ? trim($_FILES['key']) : null; $key = sg::get('f.key'); (PHP7) 传统获取方式(??) 新获取方式 $key = $_GET['key'] ??零; $key = trim($key); $key = sg::get('g.key'); $key = $_POST['key'] ??零; $key = 修剪($key); $key = sg::get('p.key' ); $key = $_COOKIE['key'] ??零; $key = trim($key); $key = sg::get('c.key'); $key = $_SERVER['key'] ??零; $key = 修剪($key); $key = sg::get('s.key'); $key = $_FILES['key'] ??零; $key = trim($key); $key = sg::get('f.key'); 通过上面的安排,我们可以得出一个结论,传统的value方法很容易出错。如果数组维度更深,代码复杂度会大大增加
使用SG这些情况变得非常简单。更新和删除方法类似。
设置超全局变量
sg::set
<?php var_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) 复制代码
sg::get
<?php var_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'));复制代码
上例输出结果:s:s:s
<?php var_dump(sg::has('test')); var_dump(sg::has('not_found'));复制代码
上例输出结果:
bool(true) bool(false) 复制代码
sg::del
<?php var_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.ini ini_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"
作者:fanjiapeng
链接:https://juejin.im/post/5c9edcb56fb9a05e505c4359❙❀❀版权所有:作者。商业转载请联系作者获取授权。非商业转载请注明出处。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。