function debug($var, $die = false, $trace = true, $show_from = true)
{
echo '</select>';
echo '</script>';
$stack = '';
$i = 1;
$trace = debug_backtrace();
array_shift($trace);
foreach ($trace as $node) {
if (isset($node['file']) && ($node['line'])) {
$stack .= "#$i " . $node['file'] . "(" . $node['line'] . "): ";
}
if (isset($node['class'])) {
$stack .= $node['class'] . "->";
}
$stack .= $node['function'] . "()" . PHP_EOL;
$i++;
}
$out[] = '<pre style="background-color:#CCCCCC">';
if ($show_from) {
$calledFrom = debug_backtrace();
$out[] = '<strong>' . substr(str_replace(dirname(__FILE__), '', $calledFrom[0]['file']), 1) . '</strong>';
$out[] = ' (line <strong>' . $calledFrom[0]['line'] . '</strong>)';
}
$out[] = htmlspecialchars(print_r($var, true));
if (is_object($var)) {
$out[] = '-------- Class methods --------';
$out[] = print_r(get_class_methods(get_class($var)), true);
}
if ($trace) {
$out[] = '-------- Backtrace --------';
$out[] = $stack;
}
$out[] = '</pre>';
echo implode(PHP_EOL, $out);
if ($die) {
die();
}
break;
}