在用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掉,這樣,運行程序就知道當前所有變更的值了...適合我..看你需要了.