奇技指南
语法糖往往给 程序员 提供了更实用的编码方式,可以使代码更简洁流畅,语义更自然。本文介绍笔者自己写的 PHP 语法糖扩展,扩展了一种全新的PHP超全局变量获取方式。
本文作者范家鹏,360技术委员会--WEB服务端分TC委员。
说说语法糖
首先说说“ 语法糖 ”这个词绝非贬义词,它可以给我们的开发工作带来便利,是一种轻量级便捷的写法,既不会对语言本身的使用造成不利影响,也不会在性能上带来损失。
通常情况下,使用语法糖能够增加程序的可读性,减少程序复杂性,减少编码中出错的机会,也对开发工程师具有友好性,能够提升我们的开发效率。
优秀的语法糖,应该是一种灵魂思想的注入,简单写法的应用。我这里用一幅图来表示:
什么是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超全局变量
-
支持取值前调用自定义函数,默认情况下,字符串变量会自动调用 PHP trim
-
解决使用PHP超全局变量时出现未定义系列的问题 (Undefined variable, Undefinedoffset)
-
采用静态方法时,以小数点代替PHP数组维度
-
采用global声明方式时,以下划线代替PHP数组维度
-
支持可配置的global $variable查找深度,默认一级查找
配置项(php.ini)
Hash Map
流程图
global 声明方式(PHP7)
函数方式
API
global 声明方式
静态方法
例子
global 声明例子
sg.global_level = 1
以上例子输出的结果:
sg.global_level = 0
以上例子输出的结果:
sg.func_name
以上例子输出的结果:
静态方法例子
get/set/has/del()
以上例子输出的结果:
sg.func_name
以上例子输出的结果:
性能测试
噼里啪啦说了大半天,性能到底怎么样呢?我在本地环境做了一个简单的ab测试(ab -c100 -n10000),PHP测试代码如下:
default - 源码
global 声明方式 - 源码
default - 结果
global 声明方式 - 结果
总 结
SG 具有以下优势:
-
兼容了当前的主流PHP版本
-
提供了一种更加甜蜜的语法,丰富了Superglobals的应用
-
我们始终相信:简单才是王道
注意:global 声明方式,当前只支持不可变变量名。
喜欢记得关注鸭~
界世的你当不
只做你的肩膀
无
360官方技术公众号
技术干货|一手资讯|精彩活动
空·
点击“阅读原文”查看项目详情
右边给我一朵小花花
以上所述就是小编给大家介绍的《SG :一个简单的PHP语法糖扩展》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Dockerfile 目前可扩展的语法
- 批量下载 BCompare 的语法高亮扩展包
- 在ES6中使用扩展语法有什么好处?它与rest语法有什么不同?
- iBoxDB.NET Linq 查询语法扩展库 0.5 发布
- 嵌入式C语言自我修养(01):Linux 内核中的 C 语言语法扩展
- Swift语法快速入门(一)之 Swift基础语法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
全景探秘游戏设计艺术
Jesse Schell / 吕阳、蒋韬、唐文 / 电子工业出版社 / 2010-6 / 69.00元
撬开你脑子里的那些困惑,让你重新认识游戏设计的真谛,人人都可以成为成功的游戏设计者!从更多的角度去审视你的游戏,从不完美的想法中跳脱出来,从枯燥的游戏设计理论中发现理论也可以这样好玩。本书主要内容包括:游戏的体验、构成游戏的元素、元素支撑的主题、游戏的改进、游戏机制、游戏中的角色、游戏设计团队、如何开发好的游戏、如何推销游戏、设计者的责任等。 本书适合任何游戏设计平台的游戏设计从业人员或即将......一起来看看 《全景探秘游戏设计艺术》 这本书的介绍吧!
JS 压缩/解压工具
在线压缩/解压 JS 代码
RGB转16进制工具
RGB HEX 互转工具