| @@ 10-28 (lines=19) @@ | ||
| 7 | use League\JsonGuard\Validator; |
|
| 8 | use function League\JsonGuard\error; |
|
| 9 | ||
| 10 | final class MaxItems implements ConstraintInterface |
|
| 11 | { |
|
| 12 | const KEYWORD = 'maxItems'; |
|
| 13 | ||
| 14 | /** |
|
| 15 | * {@inheritdoc} |
|
| 16 | */ |
|
| 17 | public function validate($value, $parameter, Validator $validator) |
|
| 18 | { |
|
| 19 | Assert::type($parameter, 'integer', self::KEYWORD, $validator->getSchemaPath()); |
|
| 20 | Assert::nonNegative($parameter, self::KEYWORD, $validator->getSchemaPath()); |
|
| 21 | ||
| 22 | if (!is_array($value) || count($value) <= $parameter) { |
|
| 23 | return null; |
|
| 24 | } |
|
| 25 | ||
| 26 | return error('The array must contain less than {parameter} items.', $validator); |
|
| 27 | } |
|
| 28 | } |
|
| 29 | ||
| @@ 10-28 (lines=19) @@ | ||
| 7 | use League\JsonGuard\Validator; |
|
| 8 | use function League\JsonGuard\error; |
|
| 9 | ||
| 10 | final class MaxProperties implements ConstraintInterface |
|
| 11 | { |
|
| 12 | const KEYWORD = 'maxProperties'; |
|
| 13 | ||
| 14 | /** |
|
| 15 | * {@inheritdoc} |
|
| 16 | */ |
|
| 17 | public function validate($value, $parameter, Validator $validator) |
|
| 18 | { |
|
| 19 | Assert::type($parameter, 'integer', self::KEYWORD, $validator->getSchemaPath()); |
|
| 20 | Assert::nonNegative($parameter, self::KEYWORD, $validator->getSchemaPath()); |
|
| 21 | ||
| 22 | if (!is_object($value) || count(get_object_vars($value)) <= $parameter) { |
|
| 23 | return null; |
|
| 24 | } |
|
| 25 | ||
| 26 | return error('The object must contain less than {parameter} properties.', $validator); |
|
| 27 | } |
|
| 28 | } |
|
| 29 | ||
| @@ 10-28 (lines=19) @@ | ||
| 7 | use League\JsonGuard\Validator; |
|
| 8 | use function League\JsonGuard\error; |
|
| 9 | ||
| 10 | final class MinItems implements ConstraintInterface |
|
| 11 | { |
|
| 12 | const KEYWORD = 'minItems'; |
|
| 13 | ||
| 14 | /** |
|
| 15 | * {@inheritdoc} |
|
| 16 | */ |
|
| 17 | public function validate($value, $parameter, Validator $validator) |
|
| 18 | { |
|
| 19 | Assert::type($parameter, 'integer', self::KEYWORD, $validator->getSchemaPath()); |
|
| 20 | Assert::nonNegative($parameter, self::KEYWORD, $validator->getSchemaPath()); |
|
| 21 | ||
| 22 | if (!is_array($value) || count($value) >= $parameter) { |
|
| 23 | return null; |
|
| 24 | } |
|
| 25 | ||
| 26 | return error('The array must contain at least {parameter} items.', $validator); |
|
| 27 | } |
|
| 28 | } |
|
| 29 | ||
| @@ 10-28 (lines=19) @@ | ||
| 7 | use League\JsonGuard\Validator; |
|
| 8 | use function League\JsonGuard\error; |
|
| 9 | ||
| 10 | final class MinProperties implements ConstraintInterface |
|
| 11 | { |
|
| 12 | const KEYWORD = 'minProperties'; |
|
| 13 | ||
| 14 | /** |
|
| 15 | * {@inheritdoc} |
|
| 16 | */ |
|
| 17 | public function validate($value, $parameter, Validator $validator) |
|
| 18 | { |
|
| 19 | Assert::type($parameter, 'integer', self::KEYWORD, $validator->getSchemaPath()); |
|
| 20 | Assert::nonNegative($parameter, self::KEYWORD, $validator->getSchemaPath()); |
|
| 21 | ||
| 22 | if (!is_object($value) || count(get_object_vars($value)) >= $parameter) { |
|
| 23 | return null; |
|
| 24 | } |
|
| 25 | ||
| 26 | return error('The object must contain at least {parameter} properties.', $validator); |
|
| 27 | } |
|
| 28 | } |
|
| 29 | ||