From b80bac0a73bca1bb19920facd76f158e0711e7e1 Mon Sep 17 00:00:00 2001 From: Dmitrii Derepko Date: Sun, 23 Jun 2024 14:20:52 +0300 Subject: [PATCH 01/10] Simplify creating error string --- src/ErrorHandler.php | 2 +- src/Renderer/PlainTextRenderer.php | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/ErrorHandler.php b/src/ErrorHandler.php index 7f0c575..2a7d4b3 100644 --- a/src/ErrorHandler.php +++ b/src/ErrorHandler.php @@ -62,7 +62,7 @@ public function handle( $renderer ??= $this->defaultRenderer; try { - $this->logger->error((string) (new PlainTextRenderer())->renderVerbose($t, $request), ['throwable' => $t]); + $this->logger->error(PlainTextRenderer::throwableToString($t), ['throwable' => $t]); return $this->debug ? $renderer->renderVerbose($t, $request) : $renderer->render($t, $request); } catch (Throwable $t) { return new ErrorData((string) $t); diff --git a/src/Renderer/PlainTextRenderer.php b/src/Renderer/PlainTextRenderer.php index 32982c3..d5e80c6 100644 --- a/src/Renderer/PlainTextRenderer.php +++ b/src/Renderer/PlainTextRenderer.php @@ -22,9 +22,26 @@ public function render(Throwable $t, ServerRequestInterface $request = null): Er public function renderVerbose(Throwable $t, ServerRequestInterface $request = null): ErrorData { return new ErrorData( - $t::class . " with message '{$t->getMessage()}' \n\nin " - . $t->getFile() . ':' . $t->getLine() . "\n\n" - . "Stack trace:\n" . $t->getTraceAsString() + $this->throwableToString($t) + ); + } + + public static function throwableToString(Throwable $t): string + { + return sprintf( + <<getMessage(), + $t->getFile(), + $t->getLine(), + $t->getTraceAsString() ); } } From 0c98e8501cb40e1002f7d61418676fcf0fbebe1b Mon Sep 17 00:00:00 2001 From: StyleCI Bot Date: Sun, 23 Jun 2024 11:21:11 +0000 Subject: [PATCH 02/10] Apply fixes from StyleCI --- src/Exception/ErrorException.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Exception/ErrorException.php b/src/Exception/ErrorException.php index e79db27..02a2451 100644 --- a/src/Exception/ErrorException.php +++ b/src/Exception/ErrorException.php @@ -113,7 +113,7 @@ private function addXDebugTraceToFatalIfAvailable(): void $trace[] = $frame; } - $ref = new ReflectionProperty(\Exception::class, 'trace'); + $ref = new ReflectionProperty(Exception::class, 'trace'); $ref->setAccessible(true); $ref->setValue($this, $trace); } From 1f673740ade4e4985a0c5f1fcc9d581439e11e7b Mon Sep 17 00:00:00 2001 From: xepozz Date: Sun, 23 Jun 2024 12:44:09 +0000 Subject: [PATCH 03/10] Apply Rector changes (CI) --- src/Renderer/PlainTextRenderer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Renderer/PlainTextRenderer.php b/src/Renderer/PlainTextRenderer.php index d5e80c6..76fc39a 100644 --- a/src/Renderer/PlainTextRenderer.php +++ b/src/Renderer/PlainTextRenderer.php @@ -22,7 +22,7 @@ public function render(Throwable $t, ServerRequestInterface $request = null): Er public function renderVerbose(Throwable $t, ServerRequestInterface $request = null): ErrorData { return new ErrorData( - $this->throwableToString($t) + self::throwableToString($t) ); } From f99da261a7e16c15a9607f457bbc572b39abffbf Mon Sep 17 00:00:00 2001 From: Dmitrii Derepko Date: Mon, 24 Jun 2024 15:45:25 +0300 Subject: [PATCH 04/10] Show full argument by click --- src/Renderer/HtmlRenderer.php | 8 +++--- templates/_call-stack-item.php | 13 +++++++--- templates/development.css | 10 +++++++- templates/development.php | 45 +++++++++++++++++++++++++++++++--- 4 files changed, 64 insertions(+), 12 deletions(-) diff --git a/src/Renderer/HtmlRenderer.php b/src/Renderer/HtmlRenderer.php index b3449d5..4f9ad07 100644 --- a/src/Renderer/HtmlRenderer.php +++ b/src/Renderer/HtmlRenderer.php @@ -276,7 +276,7 @@ public function renderCallStack(Throwable $t): string * * @return string The string representation of the arguments array. */ - public function argumentsToString(array $args): string + public function argumentsToString(array $args, bool $truncate): string { $count = 0; $isAssoc = $args !== array_values($args); @@ -287,7 +287,7 @@ public function argumentsToString(array $args): string foreach ($args as $key => $value) { $count++; - if ($count >= 5) { + if ($truncate && $count >= 5) { if ($count > 5) { unset($args[$key]); } else { @@ -302,7 +302,7 @@ public function argumentsToString(array $args): string $args[$key] = '' . ($value ? 'true' : 'false') . ''; } elseif (is_string($value)) { $fullValue = $this->htmlEncode($value); - if (mb_strlen($value, 'UTF-8') > 32) { + if ($truncate && mb_strlen($value, 'UTF-8') > 32) { $displayValue = $this->htmlEncode(mb_substr($value, 0, 32, 'UTF-8')) . '...'; $args[$key] = "'$displayValue'"; } else { @@ -310,7 +310,7 @@ public function argumentsToString(array $args): string } } elseif (is_array($value)) { unset($args[$key]); - $args[$key] = '[' . $this->argumentsToString($value) . ']'; + $args[$key] = '[' . $this->argumentsToString($value, $truncate) . ']'; } elseif ($value === null) { $args[$key] = 'null'; } elseif (is_resource($value)) { diff --git a/templates/_call-stack-item.php b/templates/_call-stack-item.php index 4a55ff5..d4bb752 100644 --- a/templates/_call-stack-item.php +++ b/templates/_call-stack-item.php @@ -33,9 +33,16 @@ - - - htmlEncode($function)}({$this->argumentsToString($args)})" ?> + ' . $this->htmlEncode($function) . ''; + echo '('; + echo '' . $this->argumentsToString($args, true) . ''; + echo ''; + echo ')'; + ?> diff --git a/templates/development.css b/templates/development.css index 2a5ca02..7533c13 100644 --- a/templates/development.css +++ b/templates/development.css @@ -383,6 +383,10 @@ main { } } +.hidden { + display: none; +} + .flex-1 { flex: 1; } @@ -453,11 +457,15 @@ main { color: var(--element-wrap-text-color); } -.call-stack ul li .element-wrap:hover .file-name, +.call-stack ul li .element-wrap .file-name:hover, .call-stack ul li .element-code-wrap .code-wrap .lines-item:hover { color: var(--element-wrap-hover-text-color); } +.call-stack ul li .arguments:hover { + color: var(--element-wrap-hover-text-color); +} + .call-stack ul li .element-wrap .function-info { display: inline-block; } diff --git a/templates/development.php b/templates/development.php index 5b61714..23c8498 100644 --- a/templates/development.php +++ b/templates/development.php @@ -161,8 +161,8 @@