mirror of
https://github.com/sbrl/Pepperminty-Wiki.git
synced 2024-11-25 17:23:00 +00:00
Enhance stack_trace() method.
This commit is contained in:
parent
805cf5df53
commit
b97dfe7d4f
1 changed files with 42 additions and 6 deletions
44
core.php
44
core.php
|
@ -457,22 +457,58 @@ function system_extension_mime_type($ext) {
|
|||
|
||||
/**
|
||||
* Generates a stack trace.
|
||||
* @param bool $log_trace Whether to send the stack trace to the error log in addition to returning it.
|
||||
* @param bool $log_trace Whether to send the stack trace to the error log.
|
||||
* @param bool $full Whether to output a full description of all the variables involved.
|
||||
* @return string A string prepresentation of a stack trace.
|
||||
*/
|
||||
function stack_trace($log_trace = true)
|
||||
function stack_trace($log_trace = true, $full = false)
|
||||
{
|
||||
$result = "";
|
||||
$stackTrace = debug_backtrace();
|
||||
$stackHeight = count($stackTrace);
|
||||
foreach ($stackTrace as $i => $stackEntry)
|
||||
{
|
||||
$result .= "#" . ($stackHeight - $i) . " - " . $stackEntry["file"] . ":" . $stackEntry["line"] . " (" . $stackEntry["function"] . ":" . count($stackEntry["args"]) . ")\n";
|
||||
$result .= "#" . ($stackHeight - $i) . ": ";
|
||||
$result .= (isset($stackEntry["file"]) ? $stackEntry["file"] : "") . ":" . (isset($stackEntry["line"]) ? $stackEntry["line"] : "") . " - ";
|
||||
if(isset($stackEntry["function"]))
|
||||
{
|
||||
$result .= "(in " . $stackEntry["function"];
|
||||
if(isset($stackEntry["args"]) && count($stackEntry["args"]))
|
||||
{
|
||||
$result .= ": ";
|
||||
$result .= implode(", ", array_map($full ? "var_dump_ret" : "var_dump_short", $stackEntry["args"]));
|
||||
}
|
||||
}
|
||||
$result .= ")\n";
|
||||
}
|
||||
|
||||
if($log_trace)
|
||||
error_log($result);
|
||||
return $result;
|
||||
}
|
||||
/**
|
||||
* Calls var_dump() and returns the output.
|
||||
* @param mixed $var The thing to pass to var_dump().
|
||||
* @return string The output captured from var_dump().
|
||||
*/
|
||||
function var_dump_ret($var)
|
||||
{
|
||||
ob_start();
|
||||
var_dump($var);
|
||||
return ob_get_clean();
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls var_dump(), shortening the output for various types.
|
||||
* @param mixed $var The thing to pass to var_dump().
|
||||
* @return string A shortened version of the var_dump() output.
|
||||
*/
|
||||
function var_dump_short($var)
|
||||
{
|
||||
$result = trim(var_dump_ret($var));
|
||||
if(substr($result, 0, 6) === "object" || substr($result, 0, 5) === "array")
|
||||
{
|
||||
$result = substr($result, 0, strpos($result, " ")) . " { ... }";
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue