AbstractValidator   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 39
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A values() 0 11 3
A validateList() 0 5 1
1
<?php
2
3
namespace Siak\Tontine\Validation;
4
5
use function array_map;
6
use function is_string;
7
use function trim;
8
9
abstract class AbstractValidator
10
{
11
    /**
12
     * Process input values before validation
13
     *
14
     * @param array $values
15
     *
16
     * @return array
17
     */
18
    protected function values(array $values): array
19
    {
20
        return array_map(function($value) {
21
            if(!is_string($value))
22
            {
23
                return $value;
24
            }
25
            // Replace empty values with null.
26
            $value = trim($value);
27
            return $value !== '' ? $value : null;
28
        }, $values);
29
    }
30
31
    /**
32
     * @param array $values
33
     *
34
     * @return array
35
     */
36
    abstract public function validateItem(array $values): array;
37
38
    /**
39
     * @param array $values
40
     *
41
     * @return array
42
     */
43
    public function validateList(array $values): array
44
    {
45
        return array_map(function($value) {
46
            return $this->validateItem($value);
47
        }, $values);
48
    }
49
}
50