65 lines
2.1 KiB
PHP
65 lines
2.1 KiB
PHP
<?php
|
|
|
|
/** DomFramework
|
|
* @package domframework
|
|
* @author Dominique Fournier <dominique@fournier38.fr>
|
|
* @license BSD
|
|
*/
|
|
|
|
namespace Domframework;
|
|
|
|
/** Display the backtrace in HTML with clicks to display the content
|
|
*/
|
|
class Backtrace
|
|
{
|
|
/** Display the backtrace in the browser
|
|
* use: \backtrace::show (debug_backtrace ());
|
|
* @param array $backtrace The backtrace to display
|
|
*/
|
|
public static function show($backtrace)
|
|
{
|
|
if (! is_array($backtrace)) {
|
|
throw new \Exception("Backtrace invalid: not an array", 500);
|
|
}
|
|
echo "<pre>Debug BackTrace:\n";
|
|
foreach ($backtrace as $key => $back) {
|
|
echo "<span onclick=\"document.getElementById('backtrace_$key')." .
|
|
"classList.toggle('hidden');\" style='cursor: pointer;'>";
|
|
echo "$key => ";
|
|
if (array_key_exists("file", $back)) {
|
|
echo $back["file"] . "[" . $back["line"] . "] : ";
|
|
}
|
|
if (array_key_exists("class", $back)) {
|
|
echo $back["class"];
|
|
}
|
|
echo "::" . $back["function"] . "(";
|
|
if (array_key_exists("args", $back)) {
|
|
foreach ($back["args"] as $k => $arg) {
|
|
if ($k > 0) {
|
|
echo ", ";
|
|
}
|
|
if (is_array($arg)) {
|
|
echo "ARRAY";
|
|
} elseif (is_object($arg)) {
|
|
echo "OBJECT " . get_class($arg);
|
|
} elseif (is_bool($arg)) {
|
|
echo ($arg === true) ? "true" : "false";
|
|
} elseif (is_string($arg)) {
|
|
echo "\"$arg\"";
|
|
} elseif (is_int($arg) || is_float($arg)) {
|
|
echo $arg;
|
|
} else {
|
|
var_dump($arg);
|
|
}
|
|
}
|
|
}
|
|
echo ")";
|
|
echo "</span>";
|
|
echo "<div id='backtrace_$key' class='hidden'>";
|
|
print_r($back);
|
|
echo "</div>\n";
|
|
}
|
|
echo "</pre>\n";
|
|
}
|
|
}
|