ExclusionPolicy::__construct()   A
last analyzed

Complexity

Conditions 4
Paths 3

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 4.3731

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 12
ccs 5
cts 7
cp 0.7143
rs 9.2
cc 4
eloc 6
nc 3
nop 1
crap 4.3731
1
<?php
2
3
namespace Happyr\SerializerBundle\Annotation;
4
5
use Happyr\SerializerBundle\Exception\RuntimeException;
6
7
/**
8
 * @Annotation
9
 * @Target({"CLASS"})
10
 *
11
 * @author Tobias Nyholm <[email protected]>
12
 */
13
final class ExclusionPolicy implements SerializerAnnotation
14
{
15
    const NONE = 'NONE';
16
    const ALL = 'ALL';
17
18
    public $value;
19
20 23
    public function __construct(array $values)
21
    {
22 23
        if (!is_string($values['value'])) {
23
            throw new RuntimeException('"value" must be a string.');
24
        }
25
26 23
        $this->value = strtoupper($values['value']);
27
28 23
        if (self::NONE !== $this->value && self::ALL !== $this->value) {
29
            throw new RuntimeException('Exclusion policy must either be "ALL", or "NONE".');
30
        }
31 23
    }
32
33 23
    public function getName()
34
    {
35 23
        return 'exclusion_policy';
36
    }
37
38 23
    public function getValue()
39
    {
40 23
        return $this->value;
41
    }
42
}
43