Completed
Push — develop ( 75d7aa...a3c683 )
by Stuart
04:31
created

InetAddress::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
rs 9.4285
cc 1
eloc 8
nc 1
nop 7
1
<?php
2
3
/**
4
 * Copyright (c) 2016-present Ganbaro Digital Ltd
5
 * All rights reserved.
6
 *
7
 * Redistribution and use in source and binary forms, with or without
8
 * modification, are permitted provided that the following conditions
9
 * are met:
10
 *
11
 *   * Redistributions of source code must retain the above copyright
12
 *     notice, this list of conditions and the following disclaimer.
13
 *
14
 *   * Redistributions in binary form must reproduce the above copyright
15
 *     notice, this list of conditions and the following disclaimer in
16
 *     the documentation and/or other materials provided with the
17
 *     distribution.
18
 *
19
 *   * Neither the names of the copyright holders nor the names of his
20
 *     contributors may be used to endorse or promote products derived
21
 *     from this software without specific prior written permission.
22
 *
23
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
 * POSSIBILITY OF SUCH DAMAGE.
35
 *
36
 * @category  Libraries
37
 * @package   OperatingSystem/NetInterfaces/Values
38
 * @author    Stuart Herbert <[email protected]>
39
 * @copyright 2016-present Ganbaro Digital Ltd www.ganbarodigital.com
40
 * @license   http://www.opensource.org/licenses/bsd-license.php  BSD License
41
 * @link      http://code.ganbarodigital.com/php-operating-system
42
 */
43
44
namespace GanbaroDigital\OperatingSystem\NetInterfaces\Values;
45
46
/**
47
 * represents an IPv4 address assigned to a network interface
48
 */
49
class InetAddress
50
{
51
    /**
52
     * what is the address assigned to the network interface?
53
     *
54
     * this is in the classic A.B.C.D format
55
     *
56
     * @var string
57
     */
58
    protected $address;
59
60
    /**
61
     * what is the netmask assigned to the network interface?
62
     *
63
     * this is in the /X format
64
     *
65
     * @var string
66
     */
67
    protected $netmask;
68
69
    /**
70
     * what is the broadcast address assigned to the network interface?
71
     *
72
     * @var this is in the classic A.B.C.D format
73
     */
74
    protected $broadcastAddress;
75
76
    /**
77
     * what is the scope of this address?
78
     *
79
     * On Linux, the following scopes are known to exist:
80
     *
81
     * - global
82
     * - link
83
     * - host
84
     * - site
85
     *
86
     * @var string
87
     */
88
    protected $scope;
89
90
    /**
91
     * what is the address label assigned to this IP address?
92
     *
93
     * On Linux, the following address labels are known to exist:
94
     *
95
     * - secondary
96
     * - dynamic
97
     * - deprecated
98
     * - tentative
99
     *
100
     * @var string
101
     */
102
    protected $addressLabel;
103
104
    /**
105
     * what is the name of the interface that this address is valid on?
106
     *
107
     * @var string
108
     */
109
    protected $linkDevice;
110
111
    /**
112
     * what additional properties have been advertised for this address?
113
     *
114
     * @var array
115
     */
116
    protected $properties;
117
118
    /**
119
     * create a value representing an IPv4 address attached to a network interface
120
     *
121
     * @param string $address
122
     *        the IPv4 address itself
123
     * @param string $netmask
124
     *        the netmask in /X format
125
     * @param string $broadcastAddress
126
     *        the broadcast address
127
     * @param string $scope
128
     *        the network scope of this address
129
     * @param string $addressLabel
130
     *        the address label assigned to this IP address
131
     * @param string $linkDevice
132
     *        the name of the interface that this address is available on
133
     * @param array $properties
134
     *        any additional properties declared on this network address
135
     */
136
    public function __construct($address, $netmask, $broadcastAddress, $scope, $addressLabel, $linkDevice, $properties = [])
137
    {
138
        $this->address = $address;
139
        $this->netmask = $netmask;
140
        $this->broadcastAddress = $broadcastAddress;
0 ignored issues
show
Documentation Bug introduced by
It seems like $broadcastAddress of type string is incompatible with the declared type object<GanbaroDigital\Op...Interfaces\Values\this> of property $broadcastAddress.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
141
        $this->scope = $scope;
142
        $this->addressLabel = $addressLabel;
143
        $this->linkDevice = $linkDevice;
144
        $this->properties = $properties;
145
    }
146
}
147