Completed
Push — develop ( 8eb671...133594 )
by Mike
19:30 queued 09:24
created

phpDocumentor/Descriptor/InterfaceDescriptor.php (3 issues)

mismatching argument types.

Documentation Minor

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

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
                continue;
91
            }
92
93 1
            $inheritedConstants = $inheritedConstants->merge($parent->getConstants());
0 ignored issues
show
$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
$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
$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