-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathAllOf.php
86 lines (75 loc) · 1.67 KB
/
AllOf.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
namespace Utopia\Http\Validator;
use Utopia\Http\Validator;
/**
* Ensure all of the validators from a list passed the check
*
* @package Utopia\Http\Validator
*/
class AllOf extends Validator
{
protected ?Validator $failedRule = null;
/**
* @param array<Validator> $validators
*/
public function __construct(protected array $validators, protected string $type = self::TYPE_MIXED)
{
}
/**
* Get Description
*
* Returns validator description
*
* @return string
*/
public function getDescription(): string
{
if (!(\is_null($this->failedRule))) {
$description = $this->failedRule->getDescription();
} else {
$description = $this->validators[0]->getDescription();
}
return $description;
}
/**
* Is valid
*
* Validation will pass when all rules are valid if only one of the rules is invalid validation will fail.
*
* @param mixed $value
* @return bool
*/
public function isValid(mixed $value): bool
{
foreach ($this->validators as $rule) {
$valid = $rule->isValid($value);
if (!$valid) {
$this->failedRule = $rule;
return false;
}
}
return true;
}
/**
* Get Type
*
* Returns validator type.
*
* @return string
*/
public function getType(): string
{
return $this->type;
}
/**
* Is array
*
* Function will return true if object is array.
*
* @return bool
*/
public function isArray(): bool
{
return true;
}
}