PHP_Debug顯示所有變量

在用PHP_Debug的時候,發現他的那個Globals對象裏面的值只有有限的一些系統變量,沒有自定義的一些變量,查看源代碼後發現:PHP/Debug/Renderer/HTML/DIV.php 裏面有具函數:

public static function globalsAsArray()
    {
        $values = array();
        foreach (array('cookie', 'server', 'get', 'post', 'files', 'env', 'session') as $name) {

            if (!isset($GLOBALS['_'.strtoupper($name)])) {
                continue;
            }
   
            $values[$name] = array();
            foreach ($GLOBALS['_'. strtoupper($name)] as $key => $value) {
                $values[$name][$key] = $value;
            }
            ksort($values[$name]);
        }  

        ksort($values);

        return $values;
    }
看到沒,他只讀取這幾個全局變量的值,這樣就好辦了,加上所有,函數修改如下:
    public static function globalsAsArray()
    {
        $values = array();
        $globalsKeys = array_keys($GLOBALS);
        //foreach (array('cookie', 'server', 'get', 'post', 'files', 'env', 'session') as $name) {
        foreach ($globalsKeys as $name) {
            if(in_array($name,array('cookie', 'server', 'get', 'post', 'files', 'env', 'session')) )
            {
            if (!isset($GLOBALS['_'.strtoupper($name)])) {
                continue;
            }
   
            $values[$name] = array();
            foreach ($GLOBALS['_'. strtoupper($name)] as $key => $value) {
                $values[$name][$key] = $value;
            }
            }elseif($name != "Dbg" && $name != "GLOBALS")
            {
                $values[$name] = $GLOBALS[$name];
            }
            ksort($values[$name]);
        }  

        ksort($values);

        return $values;
    }
爲什麼要加:elseif($name != "Dbg" && $name != "GLOBALS")這個判斷呢,原來運行Debug的時候,會產生一些系統的變量,都是存儲在以Dbg的key下,還有一個key 是GLOBALS ,也有很多重複的值,通能KILL掉,這樣,運行程序就知道當前所有變更的值了...適合我..看你需要了.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章