var_dump
此函数显示有关一个或多个表达式的结构化信息,包括表达式的类型和值。数组和对象被递归地探索,值缩进以显示结构。
因为var_dump
递归地探索对象,而__debuginfo
可以用来改变var_dump
的输出。
那么,是否可以检测var_dump
递归开始的最上面的对象,并根据特定条件返回输出?
例如:
public function __debuginfo() {
$debug = array(
'name' => 'Ucscode',
'profession' => 'programming'
);
if( $this != 'The object passed by user to var_dump' ) return $debug;
return array('type' => "The object");
}
更新:
我试过这样的方法,效果很好
public function __debuginfo() {
global $customDebugLevel; // a counter;
if( is_null($customDebugLevel) ) $customDebugLevel = -1; // 1st init
$customDebugLevel++; // increase per var_dump call
$debug = array(
'name' => 'Ucscode',
'profession' => 'programming',
'child' => $this->child
);
if( empty($customDebugLevel) ) return $debug;
return array('type' => "The object");
}
但是问题是,如果在同一个类的示例上调用var_dump
两次,它将不会重置$customDebugLevel
,因此只有第一次var_dump
调用才会产生正确的结果。
1条答案
按热度按时间nkhmeac61#
我不认为有任何内在的方法。但是您可以在调用
var_dump()
之前将变量设置为顶级对象,并与之进行比较。你可以把它封装在一个函数中: