Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/ErrorHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@ public function register(): void
return true;
}

$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
$backtrace = debug_backtrace();
array_shift($backtrace);
throw new ErrorException($message, $severity, $severity, $file, $line, null, $backtrace);
});

Expand Down
33 changes: 23 additions & 10 deletions src/Renderer/HtmlRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -256,22 +256,35 @@ public function renderCallStack(Throwable $t, array $trace = []): string
[],
);

$index = 1;
if ($t instanceof ErrorException) {
$index = 0;
}

$length = count($trace);
for ($i = 0; $i < $length; ++$i) {
$file = !empty($trace[$i]['file']) ? $trace[$i]['file'] : null;
$line = !empty($trace[$i]['line']) ? $trace[$i]['line'] : null;
$class = !empty($trace[$i]['class']) ? $trace[$i]['class'] : null;
$args = !empty($trace[$i]['args']) ? $trace[$i]['args'] : [];
foreach ($trace as $traceItem) {
$file = !empty($traceItem['file']) ? $traceItem['file'] : null;
$line = !empty($traceItem['line']) ? $traceItem['line'] : null;
$class = !empty($traceItem['class']) ? $traceItem['class'] : null;
$args = !empty($traceItem['args']) ? $traceItem['args'] : [];

$parameters = [];
$function = null;
if (!empty($trace[$i]['function']) && $trace[$i]['function'] !== 'unknown') {
$function = $trace[$i]['function'];
if ($class !== null && !str_contains($function, '{closure}')) {
$parameters = (new \ReflectionMethod($class, $function))->getParameters();
if (!empty($traceItem['function']) && $traceItem['function'] !== 'unknown') {
$function = $traceItem['function'];
if (!str_contains($function, '{closure}')) {
try {
if ($class !== null && class_exists($class)) {
$parameters = (new \ReflectionMethod($class, $function))->getParameters();
} elseif (function_exists($function)) {
$parameters = (new \ReflectionFunction($function))->getParameters();
}
} catch (\ReflectionException) {
// pass
}
}
}
$index = $i + 2;
$index++;

if ($this->isVendorFile($file)) {
$vendor[$index] = $this->renderCallStackItem(
Expand Down
1 change: 1 addition & 0 deletions templates/development.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
<?php else: ?>
<span><?= $exceptionClass ?></span>
<?php endif ?>
(Code #<?= $throwable->getCode() ?>)
</div>

<div class="exception-message">
Expand Down