Passed
Pull Request — master (#41)
by Alexander
09:27
created

ResultSet::getIterator()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Yiisoft\Validator;
4
5
/**
6
 * ResultSet stores validation result of each attribute from {@link DataSetInterface}.
7
 * It is typically obtained by validating data set with {@link Validator}.
8
 */
9
final class ResultSet implements \IteratorAggregate
10
{
11
    /**
12
     * @var Result[]
13
     */
14
    private array $results = [];
15
16 4
    public function addResult(string $attribute, Result $result): void
17
    {
18 4
        if (!isset($this->results[$attribute])) {
19 4
            $this->results[$attribute] = $result;
20 4
            return;
21
        }
22 2
        if ($result->isValid()) {
23 1
            return;
24
        }
25 1
        foreach ($result->getErrors() as $error) {
26 1
            $this->results[$attribute]->addError($error);
27
        }
28
    }
29
30 4
    public function getResult(string $attribute): Result
31
    {
32 4
        if (!isset($this->results[$attribute])) {
33
            throw new \InvalidArgumentException("There is no result for attribute \"$attribute\"");
34
        }
35
36 4
        return $this->results[$attribute];
37
    }
38
39
    public function getIterator()
40
    {
41
        return new \ArrayIterator($this->results);
42
    }
43
}
44