Completed
Push — develop ( 2993ce...48a3ec )
by Mike
09:32
created

InterfaceDescriptor::getInheritedConstants()   B

Complexity

Conditions 6
Paths 4

Size

Total Lines 20

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 6

Importance

Changes 0
Metric Value
cc 6
nc 4
nop 0
dl 0
loc 20
ccs 10
cts 10
cp 1
crap 6
rs 8.9777
c 0
b 0
f 0
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
 * @author    Mike van Riel <[email protected]>
11
 * @copyright 2010-2018 Mike van Riel / Naenius (http://www.naenius.com)
12
 * @license   http://www.opensource.org/licenses/mit-license.php MIT
13
 * @link      http://phpdoc.org
14
 */
15
16
namespace phpDocumentor\Descriptor;
17
18
/**
19
 * Descriptor representing an Interface.
20
 */
21
class InterfaceDescriptor extends DescriptorAbstract implements Interfaces\InterfaceInterface
22
{
23
    /** @var Collection $extends */
24
    protected $parents;
25
26
    /** @var Collection $constants */
27
    protected $constants;
28
29
    /** @var Collection $methods */
30
    protected $methods;
31
32
    /**
33
     * Initializes the all properties representing a collection with a new Collection object.
34
     */
35 1
    public function __construct()
36
    {
37 1
        parent::__construct();
38
39 1
        $this->setParent(new Collection());
40 1
        $this->setConstants(new Collection());
41 1
        $this->setMethods(new Collection());
42 1
    }
43
44
    /**
45
     * @param Collection $parents
46
     */
47 1
    public function setParent($parents)
48
    {
49 1
        $this->parents = $parents;
50 1
    }
51
52
    /**
53
     * @return Collection
54
     */
55 1
    public function getParent()
56
    {
57 1
        return $this->parents;
58
    }
59
60
    /**
61
     * {@inheritDoc}
62
     */
63 1
    public function setConstants(Collection $constants)
64
    {
65 1
        $this->constants = $constants;
66 1
    }
67
68
    /**
69
     * {@inheritDoc}
70
     */
71 1
    public function getConstants()
72
    {
73 1
        return $this->constants;
74
    }
75
76
    /**
77
     * {@inheritDoc}
78
     */
79 2
    public function getInheritedConstants()
80
    {
81 2
        if (!$this->getParent() || !$this->getParent() instanceof Collection || $this->getParent()->count() === 0) {
82 2
            return new Collection();
83
        }
84
85 1
        $inheritedConstants = new Collection();
86
87
        /** @var self $parent */
88 1
        foreach ($this->getParent() as $parent) {
89 1
            if (!$parent instanceof Interfaces\InterfaceInterface) {
90 1
                continue;
91
            }
92
93 1
            $inheritedConstants = $inheritedConstants->merge($parent->getConstants());
0 ignored issues
show
Documentation introduced by
$parent->getConstants() is of type object<phpDocumentor\Descriptor\Collection>, but the function expects a object<self>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
94 1
            $inheritedConstants = $inheritedConstants->merge($parent->getInheritedConstants());
95
        }
96
97 1
        return $inheritedConstants;
98
    }
99
100
    /**
101
     * {@inheritDoc}
102
     */
103 1
    public function setMethods(Collection $methods)
104
    {
105 1
        $this->methods = $methods;
106 1
    }
107
108
    /**
109
     * {@inheritDoc}
110
     */
111 1
    public function getMethods()
112
    {
113 1
        return $this->methods;
114
    }
115
116
    /**
117
     * {@inheritDoc}
118
     */
119 2
    public function getInheritedMethods()
120
    {
121 2
        if (!$this->getParent() || !$this->getParent() instanceof Collection || $this->getParent()->count() === 0) {
122 2
            return new Collection();
123
        }
124
125 1
        $inheritedMethods = new Collection();
126
127
        /** @var self $parent */
128 1
        foreach ($this->getParent() as $parent) {
129 1
            if (!$parent instanceof Interfaces\InterfaceInterface) {
130
                continue;
131
            }
132
133 1
            $inheritedMethods = $inheritedMethods->merge($parent->getMethods());
0 ignored issues
show
Documentation introduced by
$parent->getMethods() is of type object<phpDocumentor\Descriptor\Collection>, but the function expects a object<self>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
134 1
            $inheritedMethods = $inheritedMethods->merge($parent->getInheritedMethods());
0 ignored issues
show
Documentation introduced by
$parent->getInheritedMethods() is of type object<phpDocumentor\Descriptor\Collection>, but the function expects a object<self>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
135
        }
136
137 1
        return $inheritedMethods;
138
    }
139
140
    public function setPackage($package)
141
    {
142
        parent::setPackage($package);
143
144
        foreach ($this->getConstants() as $constant) {
145
            $constant->setPackage($package);
146
        }
147
148
        foreach ($this->getMethods() as $method) {
149
            $method->setPackage($package);
150
        }
151
    }
152
153
    public function getInheritedElement()
154
    {
155
        return $this->getParent() && $this->getParent()->count() > 0
156
            ? $this->getParent()->getIterator()->current()
157
            : null;
158
    }
159
}
160