From 91e6c0dcd2d1eec7b176f77e58fc19696ea451ff Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Tue, 18 Mar 2025 10:48:50 +0400 Subject: [PATCH] modifs.mineures sans commentaires --- src/schema/Result.php | 5 ++++- src/schema/_scalar/ScalarResult.php | 13 +++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/schema/Result.php b/src/schema/Result.php index 3ccb261..46f08ee 100644 --- a/src/schema/Result.php +++ b/src/schema/Result.php @@ -5,6 +5,7 @@ use IteratorAggregate; use nur\sery\wip\schema\_assoc\AssocResult; use nur\sery\wip\schema\_list\ListResult; use nur\sery\wip\schema\_scalar\ScalarResult; +use Throwable; /** * Class Result: résultat de l'analyse ou de la normalisation d'une valeur @@ -17,6 +18,8 @@ use nur\sery\wip\schema\_scalar\ScalarResult; * @property bool $normalized si la valeur est valide, est-elle normalisée? * @property string|null $messageKey clé de message si la valeur n'est pas valide * @property string|null $message message si la valeur n'est pas valide + * @property Throwable|null $exception l'exception qui a fait échouer la + * validation le cas échéant * @property string|null $origValue valeur originale avant extraction et analyse * @property mixed|null $normalizedValue la valeur normalisée si elle est * disponible, null sinon. ce champ est utilisé comme optimisation si la valeur @@ -26,7 +29,7 @@ abstract class Result implements IteratorAggregate { const KEYS = [ "resultAvailable", "present", "available", "null", "valid", "normalized", - "messageKey", "message", + "messageKey", "message", "exception", "origValue", "normalizedValue", ]; diff --git a/src/schema/_scalar/ScalarResult.php b/src/schema/_scalar/ScalarResult.php index 1dbd2b6..572d936 100644 --- a/src/schema/_scalar/ScalarResult.php +++ b/src/schema/_scalar/ScalarResult.php @@ -100,7 +100,7 @@ class ScalarResult extends Result { } } - function setInvalid($value, ScalarSchema $schema, ?Throwable $t=null): int { + function setInvalid($value, ScalarSchema $schema, ?Throwable $exception=null): int { $this->resultAvailable = true; $this->present = true; $this->available = true; @@ -109,11 +109,12 @@ class ScalarResult extends Result { $this->origValue = $value; $this->messageKey = $messageKey = "invalid"; $message = $this->getMessage($messageKey, $schema); - if ($t !== null) { - $tmessage = ValueException::get_message($t); + if ($exception !== null) { + $tmessage = ValueException::get_message($exception); if ($tmessage) $message = $tmessage; } $this->message = $message; + $this->exception = $exception; return ref_analyze::INVALID; } @@ -138,6 +139,10 @@ class ScalarResult extends Result { } function throw(bool $throw): void { - if ($throw) throw new ValueException($this->message); + if ($throw) { + $exception = $this->exception; + if ($exception !== null) throw $exception; + else throw new ValueException($this->message); + } } }