ValidatorFactory   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 21
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 0
dl 0
loc 21
c 0
b 0
f 0
ccs 4
cts 4
cp 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A create() 0 7 2
1
<?php declare(strict_types=1);
2
3
namespace indigerd\scenarios\validation\factory;
4
5
use indigerd\scenarios\validation\validator\ArrayEachValidator;
6
use indigerd\scenarios\validation\validator\ArrayValidator;
7
use indigerd\scenarios\validation\validator\EmailValidator;
8
use indigerd\scenarios\validation\validator\IntegerValidator;
9
use indigerd\scenarios\validation\validator\InValidator;
10
use indigerd\scenarios\validation\validator\NumberValidator;
11
use indigerd\scenarios\validation\validator\RequiredValidator;
12
use indigerd\scenarios\validation\validator\StringValidator;
13
use indigerd\scenarios\validation\validator\ValidatorInterface;
14
15
class ValidatorFactory
16
{
17
    protected $validators = [
18
        'integer' => IntegerValidator::class,
19
        'required' => RequiredValidator::class,
20
        'array' => ArrayValidator::class,
21
        'arrayEach' => ArrayEachValidator::class,
22
        'email' => EmailValidator::class,
23
        'in' => InValidator::class,
24
        'number' => NumberValidator::class,
25
        'string' => StringValidator::class
26
    ];
27
28 2
    public function create(string $validatorName, array $params = []) : ValidatorInterface
29
    {
30 2
        if (!isset($this->validators[$validatorName])) {
31 1
            throw new \InvalidArgumentException("Validator $validatorName not supported");
32
        }
33 1
        return new $this->validators[$validatorName]($params);
34
    }
35
}
36