摘要:介绍全称,它的诞生为了方便快捷操作预定义的超全局变量,用户定义的超全局变量。为了获得最佳性能,如果满足条件将改变原始值。
介绍
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.gitLinux系统,编译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进程,就安装成功啦。
提供的方法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" NULLbool 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"LicenseSG is open source software under the PHP License v3.01
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/31119.html
摘要:默认关闭如果该设置为,那么将禁用关闭操作符,以便不再隐藏通知警告和错误。将写入垃圾收集统计信息输出的目录,确保将运行的用户具有对该目录的写入权限。此设置确定用于将垃圾回收统计信息转储到的文件的名称。 showImg(https://segmentfault.com/img/bVbgEC5?w=480&h=274); 前言 Xdebug是PHP的扩展,用于协助调试和开发。 它包含一个用...
摘要:本文介绍笔者自己写的语法糖扩展,扩展了一种全新的超全局变量获取方式。优秀的语法糖,应该是一种灵魂思想的注入,简单写法的应用。非常重要的一点是它很简单项目背景这个出发点很简单,从扩展名称我们应该能猜到它是做什么的。 奇技指南语法糖往往给程序员提供了更实用的编码方式,可以使代码更简洁流畅,语义更自然。本文介绍笔者自己写的PHP语法糖扩展,扩展了一种全新的PHP超全局变量获取方式。本文作者...
摘要:自动代码扩展开发时遵守的代码风格是项目开发规范。遵照此规范,在实际操作中,有许多重复,接下来推荐一款专为此规范量身定制的代码生成器。可以利用此扩展来快速构建项目原型。后续还会为大家带来一些最新的技术扩展。 whoops 错误提示扩展 whoops 是一个非常优秀的 PHP Debug 扩展,它能够使你在开发中快速定位出错的位置。laravel默认安装。showImg(https://s...
摘要:自动代码扩展开发时遵守的代码风格是项目开发规范。遵照此规范,在实际操作中,有许多重复,接下来推荐一款专为此规范量身定制的代码生成器。可以利用此扩展来快速构建项目原型。后续还会为大家带来一些最新的技术扩展。 whoops 错误提示扩展 whoops 是一个非常优秀的 PHP Debug 扩展,它能够使你在开发中快速定位出错的位置。laravel默认安装。showImg(https://s...
阅读 2625·2019-08-30 15:52
阅读 3555·2019-08-29 17:02
阅读 1819·2019-08-29 13:00
阅读 893·2019-08-29 11:07
阅读 3210·2019-08-27 10:53
阅读 1744·2019-08-26 13:43
阅读 963·2019-08-26 10:22
阅读 1224·2019-08-23 18:06