语法糖经常为程序员提供一种更实用的编码方法,可以使代码更简洁流畅,语义更自然。本文介绍作者编写的PHP语法糖扩展,扩展了一种全新的获取PHP超全局变量的方法。说说语法糖首先,先说说“语法糖”这个词,绝不是一个贬义词。可以给我们的开发工作带来方便。它是一种轻巧方便的写作方式,不会对语言本身的使用产生不利影响,没有任何性能损失。通常,语法糖的使用可以增加程序的可读性,降低程序的复杂度,减少编码出错的机会。对开发工程师也比较友好,可以提高我们的开发效率。优秀的语法糖应该是灵魂和思想的注入,简单书写的应用。这里我用一张图来表示:什么是SG?SG的全称是Superglobals,指的是全局范围内所有可用的变量。SG扩展了一种全新的获取PHP超全局变量的方法。这些超全局变量是:_SERVER、_GET、_POST、_FILES、_COOKIE、_SESSION、_REQUEST、_ENV。当然也可以应用于自定义变量的场景。非常重要的一点是:非常简单!一、项目背景这个想法的出发点很简单,从扩展的名字我们应该能猜到它是干什么的。在性能最佳的前提下:为了将HTTP参数获取方式简化为通俗易懂的方式,需要对HTTP参数值进行统一的过滤、转换、解密操作。在获取HTTP参数之前,需要执行一些预定义的操作。HTTP参数的所有动作都需要只在相应的PHPSuperglobal语句同步更新时使用,而不是从请求开始就扫过PHPSuperglobals。在全局语法方面,扩展了获取HTTP参数的能力。于是,SG的出现就是为了解决上述问题。它提供了更甜美的语法,目前已经发布了v3.0.0。2.项目地址https://github.com/yulonghu/sg欢迎大家提交Issues~目前支持的PHP版本,如下图所示:SG特点简单、快速、轻量级零拷贝访问PHP超全局变量,使用SG会同步更新PHP超全局变量,支持取值前调用自定义函数。默认情况下,字符串变量会自动调用PHPtrim来解决使用PHP超全局变量(Undefinedvariable、Undefinedoffset)时出现未定义系列的问题,使用static方法时,将PHP数组维度替换为小数点。使用全局声明方式时,将PHP数组维度替换为下划线,支持可配置的全局$变量搜索深度。默认一级搜索配置项(php.ini)HashMap流程图全局声明方式(PHP7):函数方式API全局声明方式:静态方法示例1.全局声明示例(一)sg.global_level=1:输出结果上面例子的:(2)sg.global_level=0上面例子的输出结果:(3)sg.func_name上面例子输出结果:2.静态方法例子(1)上面get/set/has/del()示例输出结果:(2)sg.func_name上面示例输出结果:性能测试噼啪作响大半天,性能如何?我在本地环境做了一个简单的ab测试(ab-c100-n10000)。PHP测试代码如下:default-sourcecode:globaldeclarationmethod-sourcecode:default-result:globaldeclarationmethod-result:SummarySG有以下优点:兼容目前主流的PHP版本提供更甜美的语法,丰富Superglobals的应用我们始终相信简单为王注意:全局声明方式目前只支持不可变变量名。【本文为栏目组织360科技、微信公众号“360科技(id:qihoo_tech)”原创文章】点此查看本作者更多好文
