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

NetLink::__construct()   A

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
     * a list of the properties advertised for this interface
70
     *
71
     * @var array
72
     */
73
    protected $interfaceProperties = [];
74
75
    /**
76
     * a list of the flags that have been set on this interface
77
     *
78
     * @var array
79
     */
80
    protected $interfaceFlags;
81
82
    /**
83
     * what kind of link does this interface use?
84
     *
85
     * examples (on Linux) include:
86
     *
87
     * - link/loopback
88
     * - link/ether
89
     * - link/none
90
     *
91
     * @var string
92
     */
93
    protected $linkType;
94
95
    /**
96
     * what is the MAC address of this interface?
97
     *
98
     * interfaces attached to real devices should have a MAC address
99
     *
100
     * some interfaces (e.g. VPN endpoints) will not have a MAC address
101
     *
102
     * @var string|null
103
     */
104
    protected $physicalAddress;
105
106
    /**
107
     * what is the hardware broadcast address of this interface?
108
     *
109
     * interfaces that do not have a MAC address will not have a hardware
110
     * broadcast address either
111
     *
112
     * @var string|null
113
     */
114
    protected $hardwareBroadcastAddress;
115
116
    public function __construct($interfaceIndex, $interfaceName, $interfaceMaster, $interfaceFlags, $interfaceProperties, $linkType, $physicalAddress, $hardwareBroadcastAddress)
117
    {
118
        $this->interfaceIndex = $interfaceIndex;
119
        $this->interfaceName = $interfaceName;
120
        $this->interfaceMaster = $interfaceMaster;
0 ignored issues
show
Bug introduced by
The property interfaceMaster does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
121
        $this->interfaceProperties = $interfaceProperties;
122
        $this->interfaceFlags = $interfaceFlags;
123
        $this->linkType = $linkType;
124
        $this->physicalAddress = $physicalAddress;
125
        $this->hardwareBroadcastAddress = $hardwareBroadcastAddress;
126
    }
127
}
128