forked from selective-php/validation
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathValidationResult.php
More file actions
84 lines (75 loc) · 1.86 KB
/
ValidationResult.php
File metadata and controls
84 lines (75 loc) · 1.86 KB
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
<?php
namespace Selective\Validation;
/**
* Validation Result.
*
* Represents a container for the results of a validation request.
*
* A validation result collects together errors and messages.
*
* https://martinfowler.com/articles/replaceThrowWithNotification.html
*/
final class ValidationResult
{
/**
* @var ValidationError[]
*/
private $errors = [];
/**
* Get all errors.
*
* @return ValidationError[] Errors
*/
public function getErrors(): array
{
return $this->errors;
}
/**
* Get first error.
*
* @return ValidationError|null Error message
*/
public function getFirstError(): ?ValidationError
{
return reset($this->errors) ?: null;
}
/**
* Determine if the data passes the validation rules.
*
* @return bool true if validation was successful; otherwise, false
*/
public function success(): bool
{
return empty($this->errors);
}
/**
* Get validation failed status.
*
* @return bool Status
*/
public function fails(): bool
{
return !$this->success();
}
/**
* Clear errors and message.
*/
public function clear(): void
{
$this->errors = [];
}
/**
* Add error message.
*
* @param string $field The field name containing the error
* @param string $message A String providing a short description of the error.
* The message SHOULD be limited to a concise single sentence
* @param string|null $code A numeric or alphanumeric value that indicates the error type that occurred. (optional)
*/
public function addError(string $field, string $message, ?string $code = null): void
{
$error = new ValidationError($message);
$error->setField($field)->setCode($code);
$this->errors[] = $error;
}
}