@@ -27,6 +27,26 @@ final class Validation
27
27
* @param Constraint|ValidatorInterface|null $constraintOrValidator
28
28
*/
29
29
public static function createCallable ($ constraintOrValidator = null , Constraint ...$ constraints ): callable
30
+ {
31
+ $ validator = self ::createIsValidCallable ($ constraintOrValidator , ...$ constraints );
32
+
33
+ return static function ($ value ) use ($ validator ) {
34
+ if (!$ validator ($ value , $ violations )) {
35
+ throw new ValidationFailedException ($ value , $ violations );
36
+ }
37
+
38
+ return $ value ;
39
+ };
40
+ }
41
+
42
+ /**
43
+ * Creates a callable that returns true/false instead of throwing validation exceptions.
44
+ *
45
+ * @param Constraint|ValidatorInterface|null $constraintOrValidator
46
+ *
47
+ * @return callable($value, ConstraintViolationListInterface $violations = null): bool
48
+ */
49
+ public static function createIsValidCallable ($ constraintOrValidator = null , Constraint ...$ constraints ): callable
30
50
{
31
51
$ validator = $ constraintOrValidator ;
32
52
@@ -39,13 +59,10 @@ public static function createCallable($constraintOrValidator = null, Constraint
39
59
40
60
$ validator = $ validator ?? self ::createValidator ();
41
61
42
- return static function ($ value ) use ($ constraints , $ validator ) {
62
+ return static function ($ value, & $ violations = null ) use ($ constraints , $ validator ) {
43
63
$ violations = $ validator ->validate ($ value , $ constraints );
44
- if (0 !== $ violations ->count ()) {
45
- throw new ValidationFailedException ($ value , $ violations );
46
- }
47
64
48
- return $ value ;
65
+ return 0 === $ violations -> count () ;
49
66
};
50
67
}
51
68
0 commit comments