public static function firebacktrace($backtrace)
{
$output = '';
extract(end($backtrace));
if (isset($class)) {
$fname = $class . $type . $function;
} else {
$fname = $function;
}
if (!isset($file) || $file == '') {
$file = '[Internal PHP]';
} else {
$file = basename($file);
}
$output .= "console.group(\"%s(%s): %s(…)\", \"" . basename($file) . "\", \"{$line}\", \"{$fname}\");\n";
foreach ($backtrace as $trace) {
$file = $line = $class = $type = $function = '';
$args = array();
extract($trace);
if (isset($class)) {
$fname = $class . $type . $function;
} else {
$fname = $function;
}
if (!isset($file) || $file == '') {
$file = '[Internal PHP]';
} else {
$file = basename($file);
}
$output .= "console.group(\"%s(%s): %s(%s)\", \"{$file}\", \"{$line}\", \"{$fname}\", \"";
$output2 = $comma = $argtypes = '';
foreach ((array) $args as $arg) {
$argout = str_replace("\n", '\\n', addslashes(print_r($arg, 1)));
$argtypes .= $comma . gettype($arg);
$output2 .= "console.log(\"{$argout}\");\n";
$comma = ', ';
}
$argtypes = trim($argtypes);
$output .= "{$argtypes}\");\n{$output2}";
$output .= "console.groupEnd();\n";
//$output .= ");</td></tr>";
}
return $output;
}