SG :一个简单的PHP语法糖扩展

栏目: PHP · 发布时间: 4年前

奇技指南

语法糖往往给 程序员 提供了更实用的编码方式,可以使代码更简洁流畅,语义更自然。本文介绍笔者自己写的 PHP 语法糖扩展,扩展了一种全新的PHP超全局变量获取方式。

本文作者范家鹏,360技术委员会--WEB服务端分TC委员。

说说语法糖

首先说说“ 语法糖 ”这个词绝非贬义词,它可以给我们的开发工作带来便利,是一种轻量级便捷的写法,既不会对语言本身的使用造成不利影响,也不会在性能上带来损失。

通常情况下,使用语法糖能够增加程序的可读性,减少程序复杂性,减少编码中出错的机会,也对开发工程师具有友好性,能够提升我们的开发效率。

优秀的语法糖,应该是一种灵魂思想的注入,简单写法的应用。我这里用一幅图来表示:

SG :一个简单的PHP语法糖扩展

什么是SG?

SG 全称 Superglobals,引用全局作用域中可用的全部变量。 SG 扩展了一种全新的PHP超全局变量获取方式。 

这些超全局变量是:_SERVER,_GET,_POST,_FILES,_COOKIE,_SESSION,_REQUEST,_ENV。

当然了,也可以应用到自定义变量场景。

非常重要的一点是: 它很简单

项目背景

这个idea出发点很简单,从扩展名称我们应该能猜到它是做什么的。

在性能最优的前提下:

  • 能通俗易懂地简化HTTP参数获取方法

  • 需要对HTTP参数值进行统一过滤、转换、解密操作

  • 获取HTTP参数前,需要进行一些Predefined Operation

  • 针对HTTP参数的一切行为,需要同步更新对应的PHP Superglobal

  • 声明时才使用,而非请求一开始就对PHP Superglobals扫荡式处理

  • 在global语法上,扩展一项能获取HTTP参数的能力

So, SG 出现就是为了解决上面这些问题而来,它提供了一种更加甜蜜的语法,当前已经发布了v3.0.0。

项目地址

https://github.com/yulonghu/sg 

欢迎大家来提交Issues~

当前支持的PHP版本,如下图所示:

SG :一个简单的PHP语法糖扩展

SG的特性

  • 简单,快速,轻量

  • 零拷贝访问PHP超全局变量,使用SG会同步更新PHP超全局变量

  • 支持取值前调用自定义函数,默认情况下,字符串变量会自动调用 PHP trim

  • 解决使用PHP超全局变量时出现未定义系列的问题 (Undefined variable, Undefinedoffset)

  • 采用静态方法时,以小数点代替PHP数组维度

  • 采用global声明方式时,以下划线代替PHP数组维度

  • 支持可配置的global $variable查找深度,默认一级查找

配置项(php.ini)

SG :一个简单的PHP语法糖扩展

Hash Map

SG :一个简单的PHP语法糖扩展

流程图

global 声明方式(PHP7)

SG :一个简单的PHP语法糖扩展

函数方式

SG :一个简单的PHP语法糖扩展

API

global 声明方式

SG :一个简单的PHP语法糖扩展

静态方法

SG :一个简单的PHP语法糖扩展

例子

global 声明例子

sg.global_level = 1

SG :一个简单的PHP语法糖扩展

SG :一个简单的PHP语法糖扩展

以上例子输出的结果:

SG :一个简单的PHP语法糖扩展

sg.global_level = 0

SG :一个简单的PHP语法糖扩展

以上例子输出的结果:

SG :一个简单的PHP语法糖扩展

sg.func_name

SG :一个简单的PHP语法糖扩展

以上例子输出的结果:

SG :一个简单的PHP语法糖扩展

静态方法例子

get/set/has/del()

SG :一个简单的PHP语法糖扩展

SG :一个简单的PHP语法糖扩展

以上例子输出的结果:

SG :一个简单的PHP语法糖扩展

sg.func_name

SG :一个简单的PHP语法糖扩展

以上例子输出的结果:

SG :一个简单的PHP语法糖扩展

性能测试

噼里啪啦说了大半天,性能到底怎么样呢?我在本地环境做了一个简单的ab测试(ab -c100 -n10000),PHP测试代码如下:

default - 源码

SG :一个简单的PHP语法糖扩展

global 声明方式 - 源码

SG :一个简单的PHP语法糖扩展

default - 结果

SG :一个简单的PHP语法糖扩展

SG :一个简单的PHP语法糖扩展

global 声明方式 - 结果

SG :一个简单的PHP语法糖扩展

总  结 

SG 具有以下优势:

  • 兼容了当前的主流PHP版本

  • 提供了一种更加甜蜜的语法,丰富了Superglobals的应用

  • 我们始终相信:简单才是王道

注意:global 声明方式,当前只支持不可变变量名。

SG :一个简单的PHP语法糖扩展

喜欢记得关注鸭~

界世的你当不

只做你的肩膀

SG :一个简单的PHP语法糖扩展

SG :一个简单的PHP语法糖扩展

360官方技术公众号 

技术干货|一手资讯|精彩活动

空·

SG :一个简单的PHP语法糖扩展

点击“阅读原文”查看项目详情

右边给我一朵小花花

SG :一个简单的PHP语法糖扩展


以上所述就是小编给大家介绍的《SG :一个简单的PHP语法糖扩展》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning Apache Struts

Beginning Apache Struts

Arnold Doray / Apress / 2006-02-20 / USD 44.99

Beginning Apache Struts will provide you a working knowledge of Apache Struts 1.2. This book is ideal for you Java programmers who have some JSP familiarity, but little or no prior experience with Ser......一起来看看 《Beginning Apache Struts》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具