Completed
Push — master ( f6e489...d5524c )
by Maxim
03:09
created

ValidationResult::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace Weew\Validator;
4
5
class ValidationResult implements IValidationResult {
6
    /**
7
     * @var IValidationError[]
8
     */
9
    protected $errors;
10
11
    /**
12
     * ValidationResult constructor.
13
     *
14
     * @param IValidationError[] $errors
15
     */
16
    public function __construct(array $errors = []) {
17
        $this->errors = $errors;
18
    }
19
20
    /**
21
     * @param IValidationError $error
22
     */
23
    public function addError(IValidationError $error) {
24
        $this->errors[] = $error;
25
    }
26
27
    /**
28
     * @param IValidationError[] $errors
29
     */
30
    public function addErrors(array $errors) {
31
        foreach ($errors as $error) {
32
            $this->addError($error);
33
        }
34
    }
35
36
    /**
37
     * @return IValidationError[]
38
     */
39
    public function getErrors() {
40
        return $this->errors;
41
    }
42
43
    /**
44
     * @return bool
45
     */
46
    public function isOk() {
47
        return $this->getErrorCount() === 0;
48
    }
49
50
    /**
51
     * @return bool
52
     */
53
    public function isFailed() {
54
        return ! $this->isOk();
55
    }
56
57
    /**
58
     * @return int
59
     */
60
    public function getErrorCount() {
61
        return count($this->getErrors());
62
    }
63
64
    /**
65
     * @param IValidationResult $result
66
     */
67
    public function extend(IValidationResult $result) {
68
        $this->addErrors($result->getErrors());
69
    }
70
71
    /**
72
     * @return array
73
     */
74
    public function toArray() {
75
        $errors = [];
76
77
        foreach ($this->getErrors() as $error) {
78
            if ( ! array_has($errors, $error->getSubject())) {
79
                $errors[$error->getSubject()] = [];
80
            }
81
82
            $errors[$error->getSubject()][] = $error->getMessage();
83
        }
84
85
        return $errors;
86
    }
87
}
88