我前段时间从某个地方借用了这段代码,它的工作方式就像是使用
debug_backtrace()
. 希望你觉得它有用:
function backtrace(){
$backtrace = debug_backtrace();
$output = '';
foreach ($backtrace as $bt) {
$args = '';
foreach ($bt['args'] as $a) {
if (!empty($args)) {
$args .= ', ';
}
switch (gettype($a)) {
case 'integer':
case 'double':
$args .= $a;
break;
case 'string':
//$a = htmlspecialchars(substr(, 0, 64)).((strlen($a) > 64) ? '...' : '');
$args .= "\"$a\"";
break;
case 'array':
$args .= 'Array('.count($a).')';
break;
case 'object':
$args .= 'Object('.get_class($a).')';
break;
case 'resource':
$args .= 'Resource('.strstr($a, '#').')';
break;
case 'boolean':
$args .= $a ? 'TRUE' : 'FALSE';
break;
case 'NULL':
$args .= 'Null';
break;
default:
$args .= 'Unknown';
}
}
$output .= '
';
$output .= 'file: '.@$bt['file'].' - line '.@$bt['line'].'
';
$output .= 'call: '.@$bt['class'].@$bt['type'].@$bt['function'].'('.$args.')
';
}
return $output;
}