for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace BrenoRoosevelt\Validation\Exception;
use BrenoRoosevelt\Validation\Result;
use BrenoRoosevelt\Validation\Rule;
trait GuardTrait
{
/**
* @throws ValidationExceptionInterface
*/
protected function guardRule(
Rule $rule,
mixed $input,
array $context = [],
ValidationExceptionInterface | string | null $validationException = null
): void {
$result = $rule->validate($input, $context);
$this->guardResult($result, $validationException);
}
protected function guardResult(
Result $result,
if ($result->isOk()) {
return;
$exceptionFactory = new ValidationExceptionFactory($validationException);
throw $exceptionFactory->create($result);