note 38133 added to function.debug-backtrace

From: Date: Tue, 09 Dec 2003 16:47:37 +0000
Subject: note 38133 added to function.debug-backtrace
Groups: php.notes 
Request: Send a blank email to php-notes+get-61694@lists.php.net to get a copy of this message
ATTN: jlim#natsoft.com.my Great function, but you have a few bugs. At the line: foreach($arr['args'] as $v) Change it to: $args = array(); if(!empty($arr['args'])) foreach($arr['args'] as $v) And since line & file are not present in the array if calling from the error handler, $Line = (isset($arr['line'])? $arr['line'] : "unknown"); $File = (isset($arr['file'])? $arr['file'] : "unknown"); and substitute accordingly. Here's my version of it, alas with different formatting: ---------------------------------------- function DBG_GetBacktrace() { $s = ''; $MAXSTRLEN = 64; $s = '<pre align=left>'; $traceArr = debug_backtrace(); array_shift($traceArr); $tabs = sizeof($traceArr)-1; foreach($traceArr as $arr) { for ($i=0; $i < $tabs; $i++) $s .= ' &nbsp; '; $tabs -= 1; $s .= '<font face="Courier New,Courier">'; if (isset($arr['class'])) $s .= $arr['class'].'.'; $args = array(); if(!empty($arr['args'])) foreach($arr['args'] as $v) { if (is_null($v)) $args[] = 'null'; else if (is_array($v)) $args[] = 'Array['.sizeof($v).']'; else if (is_object($v)) $args[] = 'Object:'.get_class($v); else if (is_bool($v)) $args[] = $v ? 'true' : 'false'; else { $v = (string) @$v; $str = htmlspecialchars(substr($v,0,$MAXSTRLEN)); if (strlen($v) > $MAXSTRLEN) $str .= '...'; $args[] = "\"".$str."\""; } } $s .= $arr['function'].'('.implode(', ',$args).')</font>'; $Line = (isset($arr['line'])? $arr['line'] : "unknown"); $File = (isset($arr['file'])? $arr['file'] : "unknown"); $s .= sprintf("<font color=#808080 size=-1> # line %4d, file: <a href=\"file:/%s\">%s</a></font>", $Line, $File, $File); $s .= "\n"; } $s .= '</pre>'; return $s; } ---- Manual Page -- http://www.php.net/manual/en/function.debug-backtrace.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+38133 Delete -- http://master.php.net/manage/user-notes.php?action=delete+38133&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+38133&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#61694) next »