ValidationFactory::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 24
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 17
c 1
b 0
f 0
dl 0
loc 24
ccs 2
cts 2
cp 1
rs 9.7
cc 1
nc 1
nop 0
crap 1
1
<?php
2
3
4
namespace Lexuss1979\Validol\Validations;
5
6
7
use Lexuss1979\Validol\Exceptions\InvalidValidationNameException;
8
9
class ValidationFactory
10
{
11
    protected $map;
12
13 166
    public function __construct()
14
    {
15 166
        $this->map = [
16
            //REQUIREMENTS GROUP
17
            'required' => RequiredValidation::class,
18
            'sometimes' => SometimesValidation::class,
19
20
            //TYPE GROUP
21
            'int' => IntValidation::class,
22
            'float' => FloatValidation::class,
23
            'bool' => BoolValidation::class,
24
            'array' => ArrayValidation::class,
25
            'string' => StringValidation::class,
26
            'date' => DateValidation::class,
27
28
            //COMMON GROUP
29
            'max' => MaxValidation::class,
30
            'min' => MinValidation::class,
31
            'max_len' => MaxLenValidation::class,
32
            'min_len' => MinValidation::class,
33
            'email' => EmailValidation::class,
34
            'date_before' => DateBeforeValidation::class,
35
            'date_after' => DateAfterValidation::class,
36
            'date_between' => DateBetweenValidation::class,
37
        ];
38 166
    }
39
40
    /**
41
     * @param $validation
42
     * @return ValidationInterface
43
     */
44 165
    public function get($validation)
45
    {
46 165
        $options = explode(':', $validation);
47 165
        $validationName = array_shift($options);
48 165
        if (!array_key_exists($validationName, $this->map)) {
49 1
            throw new InvalidValidationNameException('unknown validation name ' . $validationName);
50
        }
51 164
        return new $this->map[$validationName]($options);
52
    }
53
54
}