掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
語(yǔ)法糖往往給程序員提供了更實(shí)用的編碼方式,可以使代碼更簡(jiǎn)潔流暢,語(yǔ)義更自然。本文介紹筆者自己寫(xiě)的PHP語(yǔ)法糖擴(kuò)展,擴(kuò)展了一種全新的PHP超全局變量獲取方式。

說(shuō)說(shuō)語(yǔ)法糖
首先說(shuō)說(shuō)“語(yǔ)法糖”這個(gè)詞絕非貶義詞,它可以給我們的開(kāi)發(fā)工作帶來(lái)便利,是一種輕量級(jí)便捷的寫(xiě)法,既不會(huì)對(duì)語(yǔ)言本身的使用造成不利影響,也不會(huì)在性能上帶來(lái)?yè)p失。
通常情況下,使用語(yǔ)法糖能夠增加程序的可讀性,減少程序復(fù)雜性,減少編碼中出錯(cuò)的機(jī)會(huì),也對(duì)開(kāi)發(fā)工程師具有友好性,能夠提升我們的開(kāi)發(fā)效率。
優(yōu)秀的語(yǔ)法糖,應(yīng)該是一種靈魂思想的注入,簡(jiǎn)單寫(xiě)法的應(yīng)用。我這里用一幅圖來(lái)表示:
什么是SG?
SG 全稱(chēng) Superglobals,引用全局作用域中可用的全部變量。SG擴(kuò)展了一種全新的PHP超全局變量獲取方式。
這些超全局變量是:_SERVER,_GET,_POST,_FILES,_COOKIE,_SESSION,_REQUEST,_ENV。
當(dāng)然了,也可以應(yīng)用到自定義變量場(chǎng)景。
非常重要的一點(diǎn)是:它很簡(jiǎn)單!
1. 項(xiàng)目背景
這個(gè)idea出發(fā)點(diǎn)很簡(jiǎn)單,從擴(kuò)展名稱(chēng)我們應(yīng)該能猜到它是做什么的。
在性能***的前提下:
So,SG出現(xiàn)就是為了解決上面這些問(wèn)題而來(lái),它提供了一種更加甜蜜的語(yǔ)法,當(dāng)前已經(jīng)發(fā)布了v3.0.0。
2. 項(xiàng)目地址
https://github.com/yulonghu/sg
歡迎大家來(lái)提交Issues~
當(dāng)前支持的PHP版本,如下圖所示:
SG的特性
配置項(xiàng)(php.ini)
Hash Map
流程圖
global 聲明方式(PHP7):
函數(shù)方式
API
global 聲明方式:
靜態(tài)方法
例子
1. global 聲明例子
(1) sg.global_level = 1:
以上例子輸出的結(jié)果:
(2) sg.global_level = 0
以上例子輸出的結(jié)果:
(3) sg.func_name
以上例子輸出的結(jié)果:
2. 靜態(tài)方法例子
(1) get/set/has/del()
以上例子輸出的結(jié)果:
(2) sg.func_name
以上例子輸出的結(jié)果:
性能測(cè)試
噼里啪啦說(shuō)了大半天,性能到底怎么樣呢?我在本地環(huán)境做了一個(gè)簡(jiǎn)單的ab測(cè)試(ab -c100 -n10000),PHP測(cè)試代碼如下:
default - 源碼:
global 聲明方式 - 源碼:
default - 結(jié)果:
global 聲明方式 - 結(jié)果:
總結(jié)
SG具有以下優(yōu)勢(shì):
注意:global 聲明方式,當(dāng)前只支持不可變變量名。
【本文是專(zhuān)欄機(jī)構(gòu)360技術(shù)的原創(chuàng)文章,微信公眾號(hào)“360技術(shù)( id: qihoo_tech)”】

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流