AddNS   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 19
c 1
b 0
f 0
dl 0
loc 84
ccs 15
cts 15
cp 1
rs 10
wmc 7

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getNs() 0 3 1
A checkClassExist() 0 6 2
A getAlias() 0 3 1
A parseValue() 0 14 3
1
<?php
2
3
namespace BultonFr\Annotation\Annotations;
4
5
use Exception;
6
use ReflectionClass;
7
8
/**
9
 * The dedicated object for AddNS annotation
10
 */
11
class AddNS extends AbstractAnnotation
12
{
13
    /**
14
     * @const EXCEP_CLASS_NOT_EXIST Exception code if the class to import
15
     * not exist
16
     *
17
     * @see README.md for code format
18
     */
19
    const EXCEP_CLASS_NOT_EXIST = 202001;
20
    
21
    /**
22
     * The value of attribute "ns".
23
     * It's the full namespace of the class
24
     *
25
     * @var string
26
     */
27
    protected $ns = '';
28
    
29
    /**
30
     * The value of the attribute "alias"
31
     * It's the annotation name to use (after the @)
32
     * If not declared, it's the class name
33
     *
34
     * @var string
35
     */
36
    protected $alias = '';
37
    
38
    /**
39
     * Get the value of attribute "ns".
40
     * It's the full namespace of the class
41
     *
42
     * @return string
43
     */
44
    public function getNs(): string
45
    {
46 1
        return $this->ns;
47
    }
48
49
    /**
50
     * Get the value of the attribute "alias"
51
     * It's the annotation name to use (after the @)
52
     * If not declared, it's the class name
53
     *
54
     * @return string
55
     */
56
    public function getAlias(): string
57
    {
58 1
        return $this->alias;
59
    }
60
    
61
    /**
62
     * {@inheritDoc}
63
     * Obtain the ns and alias values
64
     */
65
    protected function parseValue()
66
    {
67 1
        if ($this->hasValueKey('alias') === false) {
68 1
            $this->ns = $this->obtainValueKey('ns');
69
        } else {
70 1
            $this->ns    = $this->obtainValueKey('ns');
71 1
            $this->alias = $this->obtainValueKey('alias');
72
        }
73
        
74 1
        $this->checkClassExist();
75
        
76 1
        if (empty($this->alias)) {
77 1
            $reflection  = new ReflectionClass($this->ns);
78 1
            $this->alias = $reflection->getShortName();
79
        }
80 1
    }
81
    
82
    /**
83
     * Check if the declared class on "ns" exist
84
     *
85
     * @return void
86
     *
87
     * @throws Exception If the class no exist
88
     */
89
    protected function checkClassExist()
90
    {
91 1
        if (class_exists($this->ns) === false) {
92 1
            throw new Exception(
93 1
                'Class '.$this->ns.' not exist.',
94 1
                self::EXCEP_CLASS_NOT_EXIST
95
            );
96
        }
97 1
    }
98
}
99