Passed
Branch develop (cc6782)
by Mariano
03:41
created

AnnotationParserFactory   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 23
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 3
c 3
b 0
f 0
lcom 1
cbo 0
dl 0
loc 23
ccs 6
cts 6
cp 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A getAnnotationParserFor() 0 9 3
1
<?php
2
namespace Mcustiel\SimpleRequest\Strategies;
3
4
use Mcustiel\SimpleRequest\Annotation\RequestAnnotation;
5
use Mcustiel\SimpleRequest\Annotation\ValidatorAnnotation;
6
use Mcustiel\SimpleRequest\Annotation\FilterAnnotation;
7
use Mcustiel\SimpleRequest\Annotation\ParseAs;
8
use Mcustiel\SimpleRequest\Strategies\Annotations\ValidatorAnnotationParser;
9
use Mcustiel\SimpleRequest\Strategies\Annotations\FilterAnnotationParser;
10
use Mcustiel\SimpleRequest\Strategies\Annotations\ParseAsAnnotationParser;
11
12
class AnnotationParserFactory
13
{
14
    private $map = [
15
        ValidatorAnnotation::class => ValidatorAnnotationParser::class,
16
        FilterAnnotation::class    => FilterAnnotationParser::class,
17
        ParseAs::class             => ParseAsAnnotationParser::class,
18
    ];
19
20
    /**
21
     * @param  RequestAnnotation                                               $annotation
22
     * @throws \Exception
23
     * @return \Mcustiel\SimpleRequest\Strategies\Annotations\AnnotationParser
24
     */
25 90
    public function getAnnotationParserFor(RequestAnnotation $annotation)
26
    {
27 90
        foreach ($this->map as $key => $val) {
28 90
            if ($annotation instanceof  $key) {
29 89
                return new $val;
30
            }
31 16
        }
32 1
        throw new \Exception('Unsupported annotation: ' . get_class($annotation));
33
    }
34
}
35