diff --git a/src/Actions/ValidateAction.php b/src/Actions/ValidateAction.php index 4d5871a..fd366d5 100644 --- a/src/Actions/ValidateAction.php +++ b/src/Actions/ValidateAction.php @@ -15,9 +15,10 @@ public function __construct( public function execute(array $rules, mixed $value, string $key): void { + $valueForLog = (is_string($value) || is_numeric($value)) ? (string) $value : null; foreach ($rules as $rule) { if ($rule->passes($value) === false) { - throw $this->exceptionBuilder->validationFailed($key, $rule::class); + throw $this->exceptionBuilder->validationFailed($key, $rule::class, $valueForLog); } } } diff --git a/src/Builders/ExceptionBuilder.php b/src/Builders/ExceptionBuilder.php index c6c4d9f..fb9b552 100644 --- a/src/Builders/ExceptionBuilder.php +++ b/src/Builders/ExceptionBuilder.php @@ -29,12 +29,13 @@ public function notAnArray(string $key): Exception return new NotSupportedDataException($key); } - public function validationFailed(string $key, string $ruleClassName): Exception + public function validationFailed(string $key, string $ruleClassName, ?string $value): Exception { $classNameParts = explode('\\', $ruleClassName); $shortClassName = end($classNameParts); - return new ValidationFailedException($key, $shortClassName . ' failed'); + $valueMessage = $value === null ? '' : (' with value ' . $value); + return new ValidationFailedException($key, $shortClassName . ' failed' . $valueMessage); } public function notXML(string $key): Exception diff --git a/src/Contracts/ExceptionBuilderContract.php b/src/Contracts/ExceptionBuilderContract.php index 4c25a9c..abd9925 100644 --- a/src/Contracts/ExceptionBuilderContract.php +++ b/src/Contracts/ExceptionBuilderContract.php @@ -17,7 +17,7 @@ public function notAnArray(string $key): Exception; /** * @param class-string $ruleClassName */ - public function validationFailed(string $key, string $ruleClassName): Exception; + public function validationFailed(string $key, string $ruleClassName, ?string $value): Exception; public function notXML(string $key): Exception; } diff --git a/tests/Builders/CustomExceptionBuilder.php b/tests/Builders/CustomExceptionBuilder.php index 59d7df6..49e5bd2 100644 --- a/tests/Builders/CustomExceptionBuilder.php +++ b/tests/Builders/CustomExceptionBuilder.php @@ -24,7 +24,7 @@ public function notAnArray(string $key): Exception return new Exception('notAnArray: ' . $key); } - public function validationFailed(string $key, string $ruleClassName): Exception + public function validationFailed(string $key, string $ruleClassName, ?string $value): Exception { return new Exception('validationFailed: ' . $key . ' ' . $ruleClassName); }