摘要:介紹全稱,它的誕生為了方便快捷操作預定義的超全局變量,用戶定義的超全局變量。為了獲得最佳性能,如果滿足條件將改變原始值。
介紹
SG 全稱 Superglobals,它的誕生為了方便快捷操作PHP預定義的超全局變量,用戶定義的超全局變量。
如果在非CLI模式,SG默認托管PHP預定義的超全局變量, 包括常用 $_GET,$_POST,$_COOOKIE,$_SERVER,$_FILES。
使用SG類,能讓復雜的代碼變得簡單,開啟自動過濾還能減少代碼量,進而提高我們的開發效率。
亮點功能簡單,快速,輕量
零拷貝訪問全局變量
支持自動過濾前后空格PHP trim
解決操作PHP全局變量時出現未定義系列的問題 (Undefined variable, Undefined offset)
安裝 PHP版本支持包括PHP 5.4 +
PHP 7.0 +
下載源碼git clone https://github.com/yulonghu/sg.gitLinux系統,編譯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詳細例子 獲取PHP預定義的超全局變量
傳統的獲取方式 (短) | 新獲取方式 |
---|---|
$_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") |
傳統的獲取方式 (長) | 新獲取方式 |
---|---|
$_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") |
傳統的獲取方式 (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) 傳統的獲取方式 (??) | 新獲取方式 |
---|---|
$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"); |
通過以上的整理,可以得出一個結論,傳統取值方式容易出錯,如果數組維度越深,代碼復雜度會直線上升。
使用SG,這些情況都變得很簡單。更新、刪除方式類同。
設置超全局變量 bool sg::set(string $key, mixed $value)以上例子輸出的結果:
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])以上例子輸出的結果:
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)以上例子輸出的結果:
bool(true) bool(false)bool sg::del(string $key)以上例子輸出的結果:
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將改變原始值。避免每次取值時重復做trim操作。
以上例子輸出的結果:
bool(true) string(10) "test apple"LicenseSG is open source software under the PHP License v3.01
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/31119.html
摘要:默認關閉如果該設置為,那么將禁用關閉操作符,以便不再隱藏通知警告和錯誤。將寫入垃圾收集統計信息輸出的目錄,確保將運行的用戶具有對該目錄的寫入權限。此設置確定用于將垃圾回收統計信息轉儲到的文件的名稱。 showImg(https://segmentfault.com/img/bVbgEC5?w=480&h=274); 前言 Xdebug是PHP的擴展,用于協助調試和開發。 它包含一個用...
摘要:本文介紹筆者自己寫的語法糖擴展,擴展了一種全新的超全局變量獲取方式。優秀的語法糖,應該是一種靈魂思想的注入,簡單寫法的應用。非常重要的一點是它很簡單項目背景這個出發點很簡單,從擴展名稱我們應該能猜到它是做什么的。 奇技指南語法糖往往給程序員提供了更實用的編碼方式,可以使代碼更簡潔流暢,語義更自然。本文介紹筆者自己寫的PHP語法糖擴展,擴展了一種全新的PHP超全局變量獲取方式。本文作者...
摘要:自動代碼擴展開發時遵守的代碼風格是項目開發規范。遵照此規范,在實際操作中,有許多重復,接下來推薦一款專為此規范量身定制的代碼生成器。可以利用此擴展來快速構建項目原型。后續還會為大家帶來一些最新的技術擴展。 whoops 錯誤提示擴展 whoops 是一個非常優秀的 PHP Debug 擴展,它能夠使你在開發中快速定位出錯的位置。laravel默認安裝。showImg(https://s...
摘要:自動代碼擴展開發時遵守的代碼風格是項目開發規范。遵照此規范,在實際操作中,有許多重復,接下來推薦一款專為此規范量身定制的代碼生成器。可以利用此擴展來快速構建項目原型。后續還會為大家帶來一些最新的技術擴展。 whoops 錯誤提示擴展 whoops 是一個非常優秀的 PHP Debug 擴展,它能夠使你在開發中快速定位出錯的位置。laravel默認安裝。showImg(https://s...
閱讀 2655·2019-08-30 15:52
閱讀 3601·2019-08-29 17:02
閱讀 1849·2019-08-29 13:00
閱讀 927·2019-08-29 11:07
閱讀 3242·2019-08-27 10:53
閱讀 1774·2019-08-26 13:43
閱讀 1019·2019-08-26 10:22
閱讀 1345·2019-08-23 18:06