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

ArrayValidator::getRuleParams()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 1
nop 2
dl 0
loc 10
ccs 4
cts 4
cp 1
crap 2
rs 10
c 0
b 0
f 0
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