摘要:介紹全稱,它的誕生為了方便快捷操作預(yù)定義的超全局變量,用戶定義的超全局變量。為了獲得最佳性能,如果滿足條件將改變原始值。
介紹
SG 全稱 Superglobals,它的誕生為了方便快捷操作PHP預(yù)定義的超全局變量,用戶定義的超全局變量。
如果在非CLI模式,SG默認(rèn)托管PHP預(yù)定義的超全局變量, 包括常用 $_GET,$_POST,$_COOOKIE,$_SERVER,$_FILES。
使用SG類,能讓復(fù)雜的代碼變得簡單,開啟自動過濾還能減少代碼量,進而提高我們的開發(fā)效率。
亮點功能簡單,快速,輕量
零拷貝訪問全局變量
支持自動過濾前后空格PHP trim
解決操作PHP全局變量時出現(xiàn)未定義系列的問題 (Undefined variable, Undefined offset)
安裝 PHP版本支持包括PHP 5.4 +
PHP 7.0 +
下載源碼git clone https://github.com/yulonghu/sg.gitLinux系統(tǒng),編譯SG擴展
$ /path/to/php/bin/phpize $ ./configure --with-php-config=/path/to/php/bin/php-config $ make && make installphp.ini,添加、開啟擴展
extension=sg.so [sg] sg.enable = On
重啟php進程,就安裝成功啦。
提供的方法mixed sg::get(string $key [, mixed $default_value = null]) bool sg::set(string $key, mixed $value) bool sg::has(string $key) bool sg::del(string $key)支持的INI配置項
sg.enable = On/Off sg.auto_trim = On/Off ; Strip whitespace with PHP trim詳細(xì)例子 獲取PHP預(yù)定義的超全局變量
傳統(tǒng)的獲取方式 (短) | 新獲取方式 |
---|---|
$_GET["key"] | sg::get("g.key") |
$_POST["key"] | sg::get("p.key") |
$_COOKIE["key"] | sg::get("c.key") |
$_SERVER["key"] | sg::get("s.key") |
$_FILES["key"] | sg::get("f.key") |
傳統(tǒng)的獲取方式 (長) | 新獲取方式 |
---|---|
$_GET["key"]["key1"]["key2"] | sg::get("g.key.key1.key2") |
$_POST["key"]["key1"]["key2"] | sg::get("p.key.key1.key2") |
$_COOKIE["key"]["key1"]["key2"] | sg::get("c.key.key1.key2") |
$_SERVER["key"]["key1"]["key2"] | sg::get("s.key.key1.key2") |
$_FILES["key"]["key1"]["key2"] | sg::get("f.key.key1.key2") |
傳統(tǒng)的獲取方式 (isset + trim) | 新獲取方式 |
---|---|
$key = isset($_GET["key"]) ? trim($_GET["key"]) : null; | $key = sg::get("g.key"); |
$key = isset($_POST["key"]) ? trim($_POST["key"]) : null; | $key = sg::get("p.key"); |
$key = isset($_COOKIE["key"]) ? trim($_COOKIE["key"]) : null; | $key = sg::get("c.key"); |
$key = isset($_SERVER["key"]) ? trim($_SERVER["key"]) : null; | $key = sg::get("s.key"); |
$key = isset($_FILES["key"]) ? trim($_FILES["key"]) : null; | $key = sg::get("f.key"); |
(PHP7) 傳統(tǒng)的獲取方式 (??) | 新獲取方式 |
---|---|
$key = $_GET["key"] ?? null; $key = trim($key); | $key = sg::get("g.key"); |
$key = $_POST["key"] ?? null; $key = trim($key); | $key = sg::get("p.key"); |
$key = $_COOKIE["key"] ?? null; $key = trim($key); | $key = sg::get("c.key"); |
$key = $_SERVER["key"] ?? null; $key = trim($key); | $key = sg::get("s.key"); |
$key = $_FILES["key"] ?? null; $key = trim($key); | $key = sg::get("f.key"); |
通過以上的整理,可以得出一個結(jié)論,傳統(tǒng)取值方式容易出錯,如果數(shù)組維度越深,代碼復(fù)雜度會直線上升。
使用SG,這些情況都變得很簡單。更新、刪除方式類同。
設(shè)置超全局變量 bool sg::set(string $key, mixed $value)以上例子輸出的結(jié)果:
bool(true) bool(true) bool(true) bool(true) bool(true) bool(true) bool(true) bool(true) bool(true) bool(true)mixed sg::get(string $key [, mixed $default_value = null])以上例子輸出的結(jié)果:
string(10) "test apple" array(2) { [0]=> array(2) { [0]=> string(12) "user 0 apple" [1]=> string(12) "user 1 apple" } ["a"]=> array(2) { ["a"]=> string(12) "user a apple" ["b"]=> string(12) "user b apple" } } string(3) "def" NULLbool sg::has(string $key)以上例子輸出的結(jié)果:
bool(true) bool(false)bool sg::del(string $key)以上例子輸出的結(jié)果:
bool(true) bool(true) array(2) { [0]=> array(1) { [0]=> string(12) "user 0 apple" } ["a"]=> array(2) { ["a"]=> string(12) "user a apple" ["b"]=> string(12) "user b apple" } }sg.auto_trim演示自動過濾前后空格的例子, 支持兩種方式開啟自動過濾。
為了獲得最佳性能,如果滿足trim條件, sg將改變原始值。避免每次取值時重復(fù)做trim操作。
以上例子輸出的結(jié)果:
bool(true) string(10) "test apple"LicenseSG is open source software under the PHP License v3.01
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/31119.html
摘要:默認(rèn)關(guān)閉如果該設(shè)置為,那么將禁用關(guān)閉操作符,以便不再隱藏通知警告和錯誤。將寫入垃圾收集統(tǒng)計信息輸出的目錄,確保將運行的用戶具有對該目錄的寫入權(quán)限。此設(shè)置確定用于將垃圾回收統(tǒng)計信息轉(zhuǎn)儲到的文件的名稱。 showImg(https://segmentfault.com/img/bVbgEC5?w=480&h=274); 前言 Xdebug是PHP的擴展,用于協(xié)助調(diào)試和開發(fā)。 它包含一個用...
摘要:本文介紹筆者自己寫的語法糖擴展,擴展了一種全新的超全局變量獲取方式。優(yōu)秀的語法糖,應(yīng)該是一種靈魂思想的注入,簡單寫法的應(yīng)用。非常重要的一點是它很簡單項目背景這個出發(fā)點很簡單,從擴展名稱我們應(yīng)該能猜到它是做什么的。 奇技指南語法糖往往給程序員提供了更實用的編碼方式,可以使代碼更簡潔流暢,語義更自然。本文介紹筆者自己寫的PHP語法糖擴展,擴展了一種全新的PHP超全局變量獲取方式。本文作者...
摘要:自動代碼擴展開發(fā)時遵守的代碼風(fēng)格是項目開發(fā)規(guī)范。遵照此規(guī)范,在實際操作中,有許多重復(fù),接下來推薦一款專為此規(guī)范量身定制的代碼生成器。可以利用此擴展來快速構(gòu)建項目原型。后續(xù)還會為大家?guī)硪恍┳钚碌募夹g(shù)擴展。 whoops 錯誤提示擴展 whoops 是一個非常優(yōu)秀的 PHP Debug 擴展,它能夠使你在開發(fā)中快速定位出錯的位置。laravel默認(rèn)安裝。showImg(https://s...
摘要:自動代碼擴展開發(fā)時遵守的代碼風(fēng)格是項目開發(fā)規(guī)范。遵照此規(guī)范,在實際操作中,有許多重復(fù),接下來推薦一款專為此規(guī)范量身定制的代碼生成器。可以利用此擴展來快速構(gòu)建項目原型。后續(xù)還會為大家?guī)硪恍┳钚碌募夹g(shù)擴展。 whoops 錯誤提示擴展 whoops 是一個非常優(yōu)秀的 PHP Debug 擴展,它能夠使你在開發(fā)中快速定位出錯的位置。laravel默認(rèn)安裝。showImg(https://s...
閱讀 2647·2019-08-30 15:52
閱讀 3594·2019-08-29 17:02
閱讀 1843·2019-08-29 13:00
閱讀 918·2019-08-29 11:07
閱讀 3235·2019-08-27 10:53
閱讀 1767·2019-08-26 13:43
閱讀 1011·2019-08-26 10:22
閱讀 1323·2019-08-23 18:06