Completed
Push — develop ( 5c2bf4...eb0c60 )
by Mike
03:22
created

GlobalConstantIterator   A

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
ccs 26
cts 28
cp 0.9286
rs 10
c 0
b 0
f 0
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\Const_;
21
22
final class GlobalConstantIterator implements Iterator
23
{
24
    /**
25
     * @var Const_
26
     */
27
    private $constant;
28
29
    /**
30
     * @var int index of the current constant to use
31
     */
32
    private $index = 0;
33
34
    /**
35
     * Initializes the class with source data.
36
     */
37 5
    public function __construct(Const_ $constant)
38
    {
39 5
        $this->constant = $constant;
40 5
    }
41
42
    /**
43
     * Gets line the node started in.
44
     *
45
     * @return int Line
46
     */
47 1
    public function getLine() : int
48
    {
49 1
        return $this->constant->getLine();
50
    }
51
52
    /**
53
     * Returns the name of the current constant.
54
     */
55 1
    public function getName() : string
56
    {
57 1
        return (string) $this->constant->consts[$this->index]->name;
58
    }
59
60
    /**
61
     * Returns the fqsen of the current constant.
62
     */
63 1
    public function getFqsen() : Fqsen
64
    {
65 1
        return $this->constant->consts[$this->index]->fqsen;
66
    }
67
68
    /**
69
     * Gets the doc comment of the node.
70
     *
71
     * The doc comment has to be the last comment associated with the node.
72
     */
73 2
    public function getDocComment() : ?Doc
74
    {
75 2
        $docComment = $this->constant->consts[$this->index]->getDocComment();
76 2
        if ($docComment === null) {
77 1
            $docComment = $this->constant->getDocComment();
78
        }
79
80 2
        return $docComment;
81
    }
82
83
    public function getValue()
84
    {
85
        return $this->constant->consts[$this->index]->value;
86
    }
87
88
    /**
89
     * @link http://php.net/manual/en/iterator.current.php
90
     */
91 1
    public function current() : self
92
    {
93 1
        return $this;
94
    }
95
96
    /**
97
     * @link http://php.net/manual/en/iterator.next.php
98
     */
99 2
    public function next() : void
100
    {
101 2
        ++$this->index;
102 2
    }
103
104
    /**
105
     * @link http://php.net/manual/en/iterator.key.php
106
     */
107 1
    public function key() : ?int
108
    {
109 1
        return $this->index;
110
    }
111
112
    /**
113
     * @link http://php.net/manual/en/iterator.valid.php
114
     */
115 1
    public function valid() : bool
116
    {
117 1
        return isset($this->constant->consts[$this->index]);
118
    }
119
120
    /**
121
     * @link http://php.net/manual/en/iterator.rewind.php
122
     */
123 1
    public function rewind() : void
124
    {
125 1
        $this->index = 0;
126 1
    }
127
}
128