Test Failed
Push — master ( 0b650e...b4d0bc )
by Chris
19:25
created

ValidatesWithRespectMapTrait   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 7
c 0
b 0
f 0
dl 0
loc 20
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A validation() 0 12 2
1
<?php
2
3
namespace Leonidas\Framework\Site\Form;
4
5
use Psr\Http\Message\ServerRequestInterface;
6
use Respect\Validation\Validatable;
7
use WebTheory\Saveyour\Validation\Validator;
8
9
trait ValidatesWithRespectMapTrait
10
{
11
    protected function validation(ServerRequestInterface $request): array
12
    {
13
        $validatables = $this->validatables($request);
14
        $mapName = fn (Validatable &$v, string $rule) => $v->setName($rule);
15
16
        foreach ($validatables as &$rules) {
17
            array_walk($rules, $mapName);
18
19
            $rules = new Validator(...array_values($rules));
20
        }
21
22
        return $validatables;
23
    }
24
25
    /**
26
     * @return array<string,array<string,Validatable>>
27
     */
28
    abstract protected function validatables(ServerRequestInterface $request): array;
29
}
30