成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

一個(gè)超級(jí)簡(jiǎn)單的PHP超全局變量管理擴(kuò)展

Anonymous1 / 3136人閱讀

摘要:介紹全稱,它的誕生為了方便快捷操作預(yù)定義的超全局變量,用戶定義的超全局變量。為了獲得最佳性能,如果滿足條件將改變?cè)贾怠?/p>

介紹

SG 全稱 Superglobals,它的誕生為了方便快捷操作PHP預(yù)定義的超全局變量,用戶定義的超全局變量。

如果在非CLI模式,SG默認(rèn)托管PHP預(yù)定義的超全局變量, 包括常用 $_GET,$_POST,$_COOOKIE,$_SERVER,$_FILES。

使用SG類,能讓復(fù)雜的代碼變得簡(jiǎn)單,開啟自動(dòng)過濾還能減少代碼量,進(jìn)而提高我們的開發(fā)效率。

亮點(diǎn)功能

簡(jiǎn)單,快速,輕量

零拷貝訪問全局變量

支持自動(dòng)過濾前后空格PHP trim

解決操作PHP全局變量時(shí)出現(xiàn)未定義系列的問題 (Undefined variable, Undefined offset)

安裝 PHP版本支持包括

PHP 5.4 +

PHP 7.0 +

下載源碼
git clone https://github.com/yulonghu/sg.git
Linux系統(tǒng),編譯SG擴(kuò)展
$ /path/to/php/bin/phpize
$ ./configure --with-php-config=/path/to/php/bin/php-config
$ make && make install
php.ini,添加、開啟擴(kuò)展
extension=sg.so

[sg]
sg.enable = On

重啟php進(jìn)程,就安裝成功啦。

提供的方法
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配置項(xiàng)
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)的獲取方式 (長(zhǎ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");

通過以上的整理,可以得出一個(gè)結(jié)論,傳統(tǒng)取值方式容易出錯(cuò),如果數(shù)組維度越深,代碼復(fù)雜度會(huì)直線上升。

使用SG,這些情況都變得很簡(jiǎn)單。更新、刪除方式類同。

設(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"
NULL
bool 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

演示自動(dòng)過濾前后空格的例子, 支持兩種方式開啟自動(dòng)過濾。

為了獲得最佳性能,如果滿足trim條件, sg將改變?cè)贾?。避免每次取值時(shí)重復(fù)做trim操作。


以上例子輸出的結(jié)果:

bool(true)
string(10) "test apple"
License

SG is open source software under the PHP License v3.01

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31119.html

相關(guān)文章

  • XDEBUG 從入門到精通

    摘要:默認(rèn)關(guān)閉如果該設(shè)置為,那么將禁用關(guān)閉操作符,以便不再隱藏通知警告和錯(cuò)誤。將寫入垃圾收集統(tǒng)計(jì)信息輸出的目錄,確保將運(yùn)行的用戶具有對(duì)該目錄的寫入權(quán)限。此設(shè)置確定用于將垃圾回收統(tǒng)計(jì)信息轉(zhuǎn)儲(chǔ)到的文件的名稱。 showImg(https://segmentfault.com/img/bVbgEC5?w=480&h=274); 前言 Xdebug是PHP的擴(kuò)展,用于協(xié)助調(diào)試和開發(fā)。 它包含一個(gè)用...

    leejan97 評(píng)論0 收藏0
  • SG :一個(gè)簡(jiǎn)單PHP語法糖擴(kuò)展

    摘要:本文介紹筆者自己寫的語法糖擴(kuò)展,擴(kuò)展了一種全新的超全局變量獲取方式。優(yōu)秀的語法糖,應(yīng)該是一種靈魂思想的注入,簡(jiǎn)單寫法的應(yīng)用。非常重要的一點(diǎn)是它很簡(jiǎn)單項(xiàng)目背景這個(gè)出發(fā)點(diǎn)很簡(jiǎn)單,從擴(kuò)展名稱我們應(yīng)該能猜到它是做什么的。 奇技指南語法糖往往給程序員提供了更實(shí)用的編碼方式,可以使代碼更簡(jiǎn)潔流暢,語義更自然。本文介紹筆者自己寫的PHP語法糖擴(kuò)展,擴(kuò)展了一種全新的PHP超全局變量獲取方式。本文作者...

    warkiz 評(píng)論0 收藏0
  • laravel開發(fā)擴(kuò)展記錄

    摘要:自動(dòng)代碼擴(kuò)展開發(fā)時(shí)遵守的代碼風(fēng)格是項(xiàng)目開發(fā)規(guī)范。遵照此規(guī)范,在實(shí)際操作中,有許多重復(fù),接下來推薦一款專為此規(guī)范量身定制的代碼生成器??梢岳么藬U(kuò)展來快速構(gòu)建項(xiàng)目原型。后續(xù)還會(huì)為大家?guī)硪恍┳钚碌募夹g(shù)擴(kuò)展。 whoops 錯(cuò)誤提示擴(kuò)展 whoops 是一個(gè)非常優(yōu)秀的 PHP Debug 擴(kuò)展,它能夠使你在開發(fā)中快速定位出錯(cuò)的位置。laravel默認(rèn)安裝。showImg(https://s...

    fancyLuo 評(píng)論0 收藏0
  • laravel開發(fā)擴(kuò)展記錄

    摘要:自動(dòng)代碼擴(kuò)展開發(fā)時(shí)遵守的代碼風(fēng)格是項(xiàng)目開發(fā)規(guī)范。遵照此規(guī)范,在實(shí)際操作中,有許多重復(fù),接下來推薦一款專為此規(guī)范量身定制的代碼生成器??梢岳么藬U(kuò)展來快速構(gòu)建項(xiàng)目原型。后續(xù)還會(huì)為大家?guī)硪恍┳钚碌募夹g(shù)擴(kuò)展。 whoops 錯(cuò)誤提示擴(kuò)展 whoops 是一個(gè)非常優(yōu)秀的 PHP Debug 擴(kuò)展,它能夠使你在開發(fā)中快速定位出錯(cuò)的位置。laravel默認(rèn)安裝。showImg(https://s...

    魏憲會(huì) 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<