成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SG :一個簡單的PHP語法糖擴展

開發 開發工具 前端
語法糖往往給程序員提供了更實用的編碼方式,可以使代碼更簡潔流暢,語義更自然。本文介紹筆者自己寫的PHP語法糖擴展,擴展了一種全新的PHP超全局變量獲取方式。

語法糖往往給程序員提供了更實用的編碼方式,可以使代碼更簡潔流暢,語義更自然。本文介紹筆者自己寫的PHP語法糖擴展,擴展了一種全新的PHP超全局變量獲取方式。

說說語法糖

首先說說“語法糖”這個詞絕非貶義詞,它可以給我們的開發工作帶來便利,是一種輕量級便捷的寫法,既不會對語言本身的使用造成不利影響,也不會在性能上帶來損失。

通常情況下,使用語法糖能夠增加程序的可讀性,減少程序復雜性,減少編碼中出錯的機會,也對開發工程師具有友好性,能夠提升我們的開發效率。

優秀的語法糖,應該是一種靈魂思想的注入,簡單寫法的應用。我這里用一幅圖來表示:

什么是SG?

SG 全稱 Superglobals,引用全局作用域中可用的全部變量。SG擴展了一種全新的PHP超全局變量獲取方式。

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

當然了,也可以應用到自定義變量場景。

非常重要的一點是:它很簡單!

1. 項目背景

這個idea出發點很簡單,從擴展名稱我們應該能猜到它是做什么的。

在性能***的前提下:

  • 能通俗易懂地簡化HTTP參數獲取方法
  • 需要對HTTP參數值進行統一過濾、轉換、解密操作
  • 獲取HTTP參數前,需要進行一些Predefined Operation
  • 針對HTTP參數的一切行為,需要同步更新對應的PHP Superglobal
  • 聲明時才使用,而非請求一開始就對PHP Superglobals掃蕩式處理
  • 在global語法上,擴展一項能獲取HTTP參數的能力

So,SG出現就是為了解決上面這些問題而來,它提供了一種更加甜蜜的語法,當前已經發布了v3.0.0。

2. 項目地址

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 聲明方式:

靜態方法

例子

1. global 聲明例子

(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 - 源碼:

global 聲明方式 - 源碼:

default - 結果:

global 聲明方式 - 結果:

總結

SG具有以下優勢:

  • 兼容了當前的主流PHP版本
  • 提供了一種更加甜蜜的語法,豐富了Superglobals的應用
  • 我們始終相信:簡單才是王道

注意:global 聲明方式,當前只支持不可變變量名。

【本文是51CTO專欄機構360技術的原創文章,微信公眾號“360技術( id: qihoo_tech)”】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2016-01-06 09:57:23

編寫PHP擴展

2009-11-30 18:34:22

PHP簡單語法

2019-05-23 11:42:04

Java語法糖編程語言

2016-06-02 15:10:12

SwiftSelector

2020-12-08 07:51:53

Java語法糖泛型

2022-02-14 08:04:02

Go語法糖編譯器

2011-03-24 09:34:41

SPRING

2024-11-20 13:18:21

2016-10-14 14:04:34

JAVA語法main

2024-09-11 16:34:38

語法糖Java語言

2009-07-14 16:02:42

JDBC例子

2020-11-09 06:38:00

ninja構建方式構建系統

2018-11-22 14:09:45

iOS架構組件開發

2009-08-19 04:14:00

線性鏈表

2023-02-07 10:40:30

gRPC系統Mac

2022-08-04 14:38:49

vue3.2setup代碼

2017-08-21 16:36:12

語法樹AST解析器HTML5

2023-02-01 16:36:31

GNOMEChatGPTLinux

2014-02-27 09:39:30

PHP技巧

2009-10-01 09:19:45

PHP框架ZendFramewoCake
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 视频一区二区在线观看 | 日本欧美国产在线 | 亚洲日本视频 | 特级做a爰片毛片免费看108 | 999久久精品 | 欧美国产日韩在线 | 亚洲第一成年免费网站 | 免费v片在线观看 | 国产亚洲精品综合一区 | 欧美男人天堂 | 欧美一区二区三区大片 | 在线一区视频 | 国产精品国产a | 国产精品久久一区二区三区 | 成年人免费看的视频 | 欧美成人精品一区二区男人看 | 欧美黄视频 | 国产成人精品免费视频大全最热 | 国产精品久久久久久久久久久久午夜片 | 日韩欧美一级精品久久 | 亚洲午夜久久久 | 亚洲国产成人精品女人久久久 | 丝袜一区二区三区 | 99精品国自产在线 | 亚洲第一在线 | 成人动漫一区二区 | 日本精品久久久久久久 | 天天爽天天干 | 亚洲一区 中文字幕 | aaa天堂| 超碰在线人人干 | 久久99精品久久久久久国产越南 | 在线观看日韩 | 福利网址 | 黑人性hd | 国产精品国产三级国产aⅴ入口 | 婷婷激情综合 | 亚洲一区二区在线视频 | 国产成人综合av | 国产精品久久久久久久久免费丝袜 | 国产麻豆一区二区三区 |