资讯专栏INFORMATION COLUMN

一个超级简单的PHP超全局变量管理扩展

Anonymous1 / 3127人阅读

摘要:介绍全称,它的诞生为了方便快捷操作预定义的超全局变量,用户定义的超全局变量。为了获得最佳性能,如果满足条件将改变原始值。

介绍

SG 全称 Superglobals,它的诞生为了方便快捷操作PHP预定义的超全局变量,用户定义的超全局变量。

如果在非CLI模式,SG默认托管PHP预定义的超全局变量, 包括常用 $_GET,$_POST,$_COOOKIE,$_SERVER,$_FILES。

使用SG类,能让复杂的代码变得简单,开启自动过滤还能减少代码量,进而提高我们的开发效率。

亮点功能

简单,快速,轻量

零拷贝访问全局变量

支持自动过滤前后空格PHP trim

解决操作PHP全局变量时出现未定义系列的问题 (Undefined variable, Undefined offset)

安装 PHP版本支持包括

PHP 5.4 +

PHP 7.0 +

下载源码
git clone https://github.com/yulonghu/sg.git
Linux系统,编译SG扩展
$ /path/to/php/bin/phpize
$ ./configure --with-php-config=/path/to/php/bin/php-config
$ make && make install
php.ini,添加、开启扩展
extension=sg.so

[sg]
sg.enable = On

重启php进程,就安装成功啦。

提供的方法
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预定义的超全局变量
传统的获取方式 (短) 新获取方式
$_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["key"]) ? trim($_GET["key"]) : null; $key = sg::get("g.key");
$key = isset($_POST["key"]) ? trim($_POST["key"]) : null; $key = sg::get("p.key");
$key = isset($_COOKIE["key"]) ? trim($_COOKIE["key"]) : null; $key = sg::get("c.key");
$key = isset($_SERVER["key"]) ? trim($_SERVER["key"]) : null; $key = sg::get("s.key");
$key = isset($_FILES["key"]) ? trim($_FILES["key"]) : null; $key = sg::get("f.key");
(PHP7) 传统的获取方式 (??) 新获取方式
$key = $_GET["key"] ?? null; $key = trim($key); $key = sg::get("g.key");
$key = $_POST["key"] ?? null; $key = trim($key); $key = sg::get("p.key");
$key = $_COOKIE["key"] ?? null; $key = trim($key); $key = sg::get("c.key");
$key = $_SERVER["key"] ?? null; $key = trim($key); $key = sg::get("s.key");
$key = $_FILES["key"] ?? null; $key = trim($key); $key = sg::get("f.key");

通过以上的整理,可以得出一个结论,传统取值方式容易出错,如果数组维度越深,代码复杂度会直线上升。

使用SG,这些情况都变得很简单。更新、删除方式类同。

设置超全局变量 bool sg::set(string $key, mixed $value)

以上例子输出的结果:

bool(true)
bool(true)
bool(true)
bool(true)
bool(true)

bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
mixed sg::get(string $key [, mixed $default_value = null])

以上例子输出的结果:

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"
NULL
bool sg::has(string $key)

以上例子输出的结果:

bool(true)
bool(false)
bool sg::del(string $key)

以上例子输出的结果:

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

演示自动过滤前后空格的例子, 支持两种方式开启自动过滤。

为了获得最佳性能,如果满足trim条件, sg将改变原始值。避免每次取值时重复做trim操作。


以上例子输出的结果:

bool(true)
string(10) "test apple"
License

SG is open source software under the PHP License v3.01

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31119.html

相关文章

  • XDEBUG 从入门到精通

    摘要:默认关闭如果该设置为,那么将禁用关闭操作符,以便不再隐藏通知警告和错误。将写入垃圾收集统计信息输出的目录,确保将运行的用户具有对该目录的写入权限。此设置确定用于将垃圾回收统计信息转储到的文件的名称。 showImg(https://segmentfault.com/img/bVbgEC5?w=480&h=274); 前言 Xdebug是PHP的扩展,用于协助调试和开发。 它包含一个用...

    leejan97 评论0 收藏0
  • SG :一个简单PHP语法糖扩展

    摘要:本文介绍笔者自己写的语法糖扩展,扩展了一种全新的超全局变量获取方式。优秀的语法糖,应该是一种灵魂思想的注入,简单写法的应用。非常重要的一点是它很简单项目背景这个出发点很简单,从扩展名称我们应该能猜到它是做什么的。 奇技指南语法糖往往给程序员提供了更实用的编码方式,可以使代码更简洁流畅,语义更自然。本文介绍笔者自己写的PHP语法糖扩展,扩展了一种全新的PHP超全局变量获取方式。本文作者...

    warkiz 评论0 收藏0
  • laravel开发扩展记录

    摘要:自动代码扩展开发时遵守的代码风格是项目开发规范。遵照此规范,在实际操作中,有许多重复,接下来推荐一款专为此规范量身定制的代码生成器。可以利用此扩展来快速构建项目原型。后续还会为大家带来一些最新的技术扩展。 whoops 错误提示扩展 whoops 是一个非常优秀的 PHP Debug 扩展,它能够使你在开发中快速定位出错的位置。laravel默认安装。showImg(https://s...

    fancyLuo 评论0 收藏0
  • laravel开发扩展记录

    摘要:自动代码扩展开发时遵守的代码风格是项目开发规范。遵照此规范,在实际操作中,有许多重复,接下来推荐一款专为此规范量身定制的代码生成器。可以利用此扩展来快速构建项目原型。后续还会为大家带来一些最新的技术扩展。 whoops 错误提示扩展 whoops 是一个非常优秀的 PHP Debug 扩展,它能够使你在开发中快速定位出错的位置。laravel默认安装。showImg(https://s...

    魏宪会 评论0 收藏0

发表评论

0条评论

Anonymous1

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<