ClassConstantIterator   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 106
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 92.86%

Importance

Changes 0
Metric Value
dl 0
loc 106
rs 10
c 0
b 0
f 0
ccs 26
cts 28
cp 0.9286
wmc 12
lcom 1
cbo 2

11 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getLine() 0 4 1
A getName() 0 4 1
A getFqsen() 0 4 1
A getDocComment() 0 9 2
A getValue() 0 4 1
A current() 0 4 1
A next() 0 4 1
A key() 0 4 1
A valid() 0 4 1
A rewind() 0 4 1
1
<?php
2
declare(strict_types=1);
3
4
/**
5
 * This file is part of phpDocumentor.
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 *
10
 * @copyright 2010-2018 Mike van Riel<[email protected]>
11
 * @license   http://www.opensource.org/licenses/mit-license.php MIT
12
 * @link      http://phpdoc.org
13
 */
14
15
namespace phpDocumentor\Reflection\Php\Factory;
16
17
use Iterator;
18
use phpDocumentor\Reflection\Fqsen;
19
use PhpParser\Comment\Doc;
20
use PhpParser\Node\Stmt\ClassConst;
21
22
/**
23
 * This class acts like a combination of a ClassConst and Const_
24
 * to be able to create constant descriptors using a normal strategy.
25
 */
26
final class ClassConstantIterator implements Iterator
27
{
28
    /**
29
     * @var ClassConst
30
     */
31
    private $classConstants;
32
33
    /**
34
     * @var int index of the current ClassConst to use
35
     */
36
    private $index = 0;
37
38
    /**
39
     * Initializes the class with source data.
40
     */
41 1
    public function __construct(ClassConst $classConst)
42
    {
43 1
        $this->classConstants = $classConst;
44 1
    }
45
46
    /**
47
     * Gets line the node started in.
48
     *
49
     * @return int Line
50
     */
51 1
    public function getLine(): int
52
    {
53 1
        return $this->classConstants->getLine();
54
    }
55
56
    /**
57
     * Returns the name of the current constant.
58
     */
59 1
    public function getName(): string
60
    {
61 1
        return (string) $this->classConstants->consts[$this->index]->name;
62
    }
63
64
    /**
65
     * Returns the fqsen of the current constant.
66
     */
67 1
    public function getFqsen(): Fqsen
68
    {
69 1
        return $this->classConstants->consts[$this->index]->fqsen;
70
    }
71
72
    /**
73
     * Gets the doc comment of the node.
74
     *
75
     * The doc comment has to be the last comment associated with the node.
76
     */
77 2
    public function getDocComment(): ?Doc
78
    {
79 2
        $docComment = $this->classConstants->consts[$this->index]->getDocComment();
80 2
        if ($docComment === null) {
81 1
            $docComment = $this->classConstants->getDocComment();
82
        }
83
84 2
        return $docComment;
85
    }
86
87
    public function getValue()
88
    {
89
        return $this->classConstants->consts[$this->index]->value;
90
    }
91
92
    /**
93
     * @link http://php.net/manual/en/iterator.current.php
94
     */
95 1
    public function current(): self
96
    {
97 1
        return $this;
98
    }
99
100
    /**
101
     * @link http://php.net/manual/en/iterator.next.php
102
     */
103 2
    public function next(): void
104
    {
105 2
        ++$this->index;
106 2
    }
107
108
    /**
109
     * @link http://php.net/manual/en/iterator.key.php
110
     */
111 1
    public function key(): ?int
112
    {
113 1
        return $this->index;
114
    }
115
116
    /**
117
     * @link http://php.net/manual/en/iterator.valid.php
118
     */
119 1
    public function valid(): bool
120
    {
121 1
        return isset($this->classConstants->consts[$this->index]);
122
    }
123
124
    /**
125
     * @link http://php.net/manual/en/iterator.rewind.php
126
     */
127 1
    public function rewind(): void
128
    {
129 1
        $this->index = 0;
130 1
    }
131
}
132