国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

php global 全局變量小談

Lionad-Morotar / 2009人閱讀

摘要:的全局變量看起來很好用,但稍有不慎,很容易被套住。比如如果一個簡單的配置文件如下當我們想要使用這個的時候,都知道使用就行了。沒錯,這樣可以。

php 的全局變量看起來很好用,但稍有不慎,很容易被套住。

比如: 如果一個簡單的php配置文件如下:

$name="Yi_Zhi_Yu";

當我們想要使用這個$name的時候,都知道使用include就行了。沒錯,這樣可以。但假如我想把這個$name作為一個全局變量使用,以方便統一修改呢

也容易:

include("./config.inc");
global $name;
echo $name; //Yi_Zhi_Yu

那么問題來了,假如某個函數里我要用這個全局變量呢,或許你會這么寫

function test()
{
    include("./config.inc"); //這里加載是錯誤的
    global $name;
    var_dump($name);
}
test();

Sorry, 你這樣是得不到這個變量值得,得到的僅僅是個null

這就是我在實際中遇到的一個坑,即文件加載的全局變量的初始化只能在整個腳本的最外層,我說的最外層是指不能被包含在任何的函數體或者類里面

include("./config.inc"); //最外層初始化全局變量
function test()
{
    global $name; //使用的時候定義其全局屬性
    echo $name; //Yi_Zhi_Yu
}
test();

那再來一個問題,一個在test里面被定義了全局屬性的變量(假設$age=25),假如在外面被修改了值($age=27),然后這個變量($age)再在另一個函數中調用,這個時候的這個$age應該是哪個值呢,代碼如下,是被初始化的時候值(25),還是在外面被修改了的值(27)呢。

function test()
{
    global $age;
    $age=25;
}
function test2()
{
    global $age;
    var_dump($age); //這個值應該是什么?
}

test();
var_dump($age);
$age=27;
test2();

沒錯,這個值應該是27, 這就是全局變量,只不過這種定義和初始化都是在一個函數體內完成的(不過這種方式不推薦,一般都是在最上面我說的配置文件中初始化的,只在使用的時候定義其全局屬性,但不會在代碼中修改其值,僅僅作為配置項獲取)。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30219.html

相關文章

  • workerman / 小談PHP中的幾種運行模式

    摘要:話說當下一共有種運行模式,分別是和模塊模式。使用,全稱進程管理器進行管理。工作原理啟動時載入進程管理器進程管理器自身初始化,啟動多個解釋器進程并等待來自的連接當客戶端請求到達時,進程管理器選擇并連接到一個解釋器。 我們知道 workerman 程序需要在php-cli模式下運行,也就是命令行模式,這塊我們有必要了解一下。 話說PHP當下一共有4種運行模式,分別是CGI、FastCGI、...

    darkbaby123 評論0 收藏0
  • python classmethod 與 staticmethod 小談

    摘要:而類的實例并不會影響類的靜態變量,只是會修改對象實例本身的值,所以后面兩個的結果總是同樣,如果我們使用和結果也將僅僅是靜態變量變化后的結果,與類的實例無關以上是對和的暫時做的了解的總結,如有紕漏,請及時指正 概念 python 的classmethod 與staticmethod 這兩個有什么區別? 二者又有什么聯系?在google和baidu之后, 得到的大致的聯系就是二者都是對類的...

    keke 評論0 收藏0
  • PHP7擴展開發(二):配置項與全局數值

    摘要:起步引擎提供了另種管理設置值的途徑。假設我們需要為我們擴展定義一個值并用函數返回它的內容。在為了避免命名空間的沖突,我們擴展的名字作為所有值的前綴。僅僅是一種約定,一個句點用來分隔擴展名和說明性的初始設定名字。 起步 Zend引擎提供了另種管理設置值(INI)的途徑。現在弄個簡單的,我們經常看到php.ini里有諸如 display_errors = On 這樣的全局設置。假設我們需要...

    Mr_houzi 評論0 收藏0
  • PHP 進階之路 - 揭開 PHP 線程安全的神秘面紗

    摘要:如果現有子進程中的線程總數不能滿足負載,控制進程將派生新的子進程。為解決線程的并發問題,引入了線程安全資源管理器。的全拼,用來存放各個線程的鏈表。 PHP 進階之路 - 零基礎構建自己的服務治理框架(上) PHP 進階之路 - 零基礎構建自己的服務治理框架(下) PHP 進階之路 - 億級 pv 網站架構的技術細節與套路 PHP 進階之路 - 億級 pv 網站架構實戰之性能壓榨 注...

    pepperwang 評論0 收藏0
  • SG :一個簡單的PHP語法糖擴展

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

    warkiz 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<