NetLink::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 11
rs 9.4285
cc 1
eloc 9
nc 1
nop 8

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

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/NetInterface/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
class NetLink
47
{
48
    /**
49
     * the unique ID of this interface
50
     *
51
     * on Linux, administrators and management tools can change the name of
52
     * a network interface. when they do, this ID remains the same
53
     *
54
     * @var int
55
     */
56
    protected $interfaceIndex;
57
58
    /**
59
     * the name of this interface
60
     *
61
     * this is guaranteed to be unique at any one time. On Linux (at least) it
62
     * can be changed at any time by administrators and management tools
63
     *
64
     * @var string
65
     */
66
    protected $interfaceName;
67
68
    /**
69
     * the name of the interface that this interface is bound to
70
     *
71
     * @var string|null
72
     */
73
    protected $interfaceMaster;
74
75
    /**
76
     * a list of the properties advertised for this interface
77
     *
78
     * @var array
79
     */
80
    protected $interfaceProperties = [];
81
82
    /**
83
     * a list of the flags that have been set on this interface
84
     *
85
     * @var array
86
     */
87
    protected $interfaceFlags;
88
89
    /**
90
     * what kind of link does this interface use?
91
     *
92
     * examples (on Linux) include:
93
     *
94
     * - link/loopback
95
     * - link/ether
96
     * - link/none
97
     *
98
     * @var string
99
     */
100
    protected $linkType;
101
102
    /**
103
     * what is the MAC address of this interface?
104
     *
105
     * interfaces attached to real devices should have a MAC address
106
     *
107
     * some interfaces (e.g. VPN endpoints) will not have a MAC address
108
     *
109
     * @var string|null
110
     */
111
    protected $physicalAddress;
112
113
    /**
114
     * what is the hardware broadcast address of this interface?
115
     *
116
     * interfaces that do not have a MAC address will not have a hardware
117
     * broadcast address either
118
     *
119
     * @var string|null
120
     */
121
    protected $hardwareBroadcastAddress;
122
123
    public function __construct($interfaceIndex, $interfaceName, $interfaceMaster, $interfaceFlags, $interfaceProperties, $linkType, $physicalAddress, $hardwareBroadcastAddress)
124
    {
125
        $this->interfaceIndex = $interfaceIndex;
126
        $this->interfaceName = $interfaceName;
127
        $this->interfaceMaster = $interfaceMaster;
128
        $this->interfaceProperties = $interfaceProperties;
129
        $this->interfaceFlags = $interfaceFlags;
130
        $this->linkType = $linkType;
131
        $this->physicalAddress = $physicalAddress;
132
        $this->hardwareBroadcastAddress = $hardwareBroadcastAddress;
133
    }
134
}
135