Validator   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 26
dl 0
loc 54
ccs 27
cts 27
cp 1
rs 10
c 1
b 0
f 0
wmc 7

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A validate() 0 21 3
A validated() 0 3 1
A process() 0 9 1
A errors() 0 3 1
1
<?php
2
3
4
namespace Lexuss1979\Validol;
5
6
7
use Lexuss1979\Validol\Validations\ValidationFactory;
8
9
class Validator
10
{
11
    private $validated;
12
    private $errors;
13
    private $validationFactory;
14
15 156
    public function __construct()
16
    {
17 156
        $this->validationFactory = new ValidationFactory();
18 156
    }
19
20 123
    public static function process($data, $rules)
21
    {
22 123
        $validator = new static();
23 123
        $result = $validator->validate($data, $rules);
24
25 123
        return new ValidationResult(
26 123
            $result,
27 123
            $validator->validated(),
28 123
            $validator->errors()
29
        );
30
    }
31
32 156
    public function validate($data, $rules)
33
    {
34 156
        $validationResult = true;
35 156
        $this->validated = [];
36 156
        $this->errors = [];
37
38 156
        $dataProvider = new DataProvider($data);
39
40 156
        foreach ($rules as $dataKey => $ruleDescription) {
41 156
            $rule = new Rule($ruleDescription, $this->validationFactory);
42 156
            $testedValue = $dataProvider->get($dataKey);
43
44 156
            if ($testedValue->satisfy($rule)) {
45 68
                $this->validated[$testedValue->alias()] = $testedValue->value();
46
            } else {
47 96
                $this->errors[$dataKey] = $rule->errors();
48 96
                $validationResult = false;
49
            }
50
51
        }
52 156
        return $validationResult;
53
    }
54
55 125
    public function validated()
56
    {
57 125
        return $this->validated;
58
    }
59
60 126
    public function errors()
61
    {
62 126
        return $this->errors;
63
    }
64
}