troels knak-nielsen version

  1. <?php
  2. if (!function_exists('debug_print_backtrace')) {
  3.     function debug_print_backtrace()
  4.     {
  5.         // Get backtrace
  6.         $backtrace = debug_backtrace();
  7.  
  8.         // Unset call to debug_print_backtrace
  9.         array_shift($backtrace);
  10.  
  11.         // Iterate backtrace
  12.         $calls = array();
  13.         foreach ($backtrace as $i => $call) {
  14.       if (!isset($call['file'])) {
  15.         $call['file'] = "Unknown";
  16.       }
  17.       if (!isset($call['line'])) {
  18.         $call['line'] = "Unknown";
  19.       }
  20.             $location = $call['file'] . ':' . $call['line'];
  21.             $function = (isset($call['class'])) ?
  22.                 $call['class'] . '.' . $call['function'] :
  23.                 $call['function'];
  24.  
  25.             $params = '';
  26.             if (isset($call['args'])) {
  27.         $args = Array();
  28.         foreach ($call['args'] as $arg) {
  29.           if (is_scalar($arg)) {
  30.             $args[] = gettype($arg)." ".$arg;
  31.           } else if (is_object($arg)) {
  32.             $args[] = get_class($arg);
  33.           } else {
  34.             $args[] = gettype($arg);
  35.           }
  36.  
  37.         }
  38.                 $params = implode(', ', $args);
  39.             }
  40.  
  41.             $calls[] = sprintf('#%d  %s(%s) called at [%s]',
  42.                 $i,
  43.                 $function,
  44.                 $params,
  45.                 $location);
  46.         }
  47.  
  48.         echo implode("\n", $calls);
  49.     }
  50. }
  51. ?>