Passed
Push — master ( 619936...64747c )
by Koldo
02:06
created

ArrayValidator   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 19
dl 0
loc 32
ccs 17
cts 17
cp 1
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getRuleParams() 0 10 2
A check() 0 16 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Validator;
6
7
use Assert\Assertion;
8
9
class ArrayValidator
10
{
11 7
    public static function check(array $fields, array $rules): void
12
    {
13
        array_walk($fields, function ($value, $field) use ($rules) : void {
14 7
            Assertion::keyExists($rules, $field);
15 7
            array_map(
16
                function ($validationRule) use ($value) : void {
17 7
                    $validation = explode(':', $validationRule);
18 7
                    $method = $validation[0];
19 7
                    $params = array_key_exists(1, $validation) ? $validation[1] : null;
20 7
                    $ruleMethod = self::getRuleParams($method,  $params);
21
22 7
                    list($param1, $param2) = $ruleMethod[RuleParser::getRuleMethod($method)]($params);
23
24 7
                    call_user_func_array([Assertion::class, $method], [$value, $param1, $param2]);
25 7
                },
26 7
                explode('|', $rules[$field])
27
            );
28 7
        });
29 2
    }
30
31 7
    private static function getRuleParams(string $method, ?string $params): array {
32
        return [
33
            'singleParam' => function() use ($method, $params) {
34
                return [
35 7
                    $params ? RuleParser::getRule($method, $params) : null,
36
                    null
37
                ];
38 7
            },
39
            'multipleParams' => function() use ($method, $params) {
40 1
                return RuleParser::getRule($method, $params);
41 7
            },
42
        ];
43
    }
44
}
45