打印调用栈的函数print_stack_trace
/*
* 打印调用栈的信息
* @param string $msg
* 需要打印出来的消息
* @param function $log_handler
* 处理日志的函数,如果为null,则调用print函数打印日志
* @param string $endline
* 行结束符,如果显示在网页上,可以设置为'<br/>'
* @param bool $exit
* 打完日志后是否退出程序
*/
function print_stack_trace($msg, $log_handler = null, $endline = "\n", $exit=false){
$trace = debug_backtrace();
$num = 0;
$ans = 'message:'.$msg.$endline.'stact trace back :'.$endline;
foreach($trace as $line){
$ans .= '#'.$num.' '.$line['file'].'['.$line['line'].'] ';
if($line['type'] == '->' || $line['type'] == '::'){
$ans .= $line['class'].$line['type'].$line['function'].'()';
}else{
$ans .= $line['function'].'()';
}
if(!empty($line['args'])){
$ans .= $endline.'parameters:'.$endline.print_r($line['args'], true);
}
if(!empty($line['object'])){
$ans .= $endline.'object:'.$endline.print_r($line['object'], true);
}
$ans .= $endline;
$num++;
}
if($log_handler != null && function_exists($log_handler)){
$log_handler($ans);
}else{
print $ans;
}
if($exit){
exit(1);
}
}