Passed
Branch master (837a03)
by Tomáš
02:48
created

OrderedPackage::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 10
c 1
b 0
f 0
nc 1
nop 10
dl 0
loc 22
ccs 11
cts 11
cp 1
crap 1
rs 9.9332

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
namespace Inspirum\Balikobot\Model\Values;
4
5
class OrderedPackage
6
{
7
    /**
8
     * Package ID
9
     *
10
     * @var string
11
     */
12
    private $packageId;
13
14
    /**
15
     * Package batch ID (EID)
16
     *
17
     * @var string
18
     */
19
    private $batchId;
20
21
    /**
22
     * Shipper
23
     *
24
     * @var string
25
     */
26
    private $shipper;
27
28
    /**
29
     * Carrier ID (for package tracking)
30
     *
31
     * @var string
32
     */
33
    private $carrierId;
34
35
    /**
36
     * Track URL
37
     *
38
     * @var string|null
39
     */
40
    private $trackUrl;
41
42
    /**
43
     * Label URL
44
     *
45
     * @var string|null
46
     */
47
    private $labelUrl;
48
49
    /**
50
     * Carrier ID Swap
51
     *
52
     * @var string|null
53
     */
54
    private $carrierIdSwap;
55
56
    /**
57
     * Pieces
58
     *
59
     * @var array<string>
60
     */
61
    private $pieces;
62
63
    /**
64
     * Final carrier ID
65
     *
66
     * @var string|null
67
     */
68
    private $finalCarrierId;
69
70
    /**
71
     * Final track URL
72
     *
73
     * @var string|null
74
     */
75
    private $finalTrackUrl;
76
77
    /**
78
     * OrderedPackage constructor
79
     *
80
     * @param string        $packageId
81
     * @param string        $shipper
82
     * @param string        $batchId
83
     * @param string        $carrierId
84
     * @param string|null   $trackUrl
85
     * @param string|null   $labelUrl
86
     * @param string|null   $carrierIdSwap
87
     * @param array<string> $pieces
88
     * @param string|null   $finalCarrierId
89
     * @param string|null   $finalTrackUrl
90
     */
91 54
    public function __construct(
92
        string $packageId,
93
        string $shipper,
94
        string $batchId,
95
        string $carrierId,
96
        string $trackUrl = null,
97
        string $labelUrl = null,
98
        string $carrierIdSwap = null,
99
        array $pieces = [],
100
        string $finalCarrierId = null,
101
        string $finalTrackUrl = null
102
    ) {
103 54
        $this->packageId      = $packageId;
104 54
        $this->shipper        = $shipper;
105 54
        $this->batchId        = $batchId;
106 54
        $this->carrierId      = $carrierId;
107 54
        $this->trackUrl       = $trackUrl;
108 54
        $this->labelUrl       = $labelUrl;
109 54
        $this->carrierIdSwap  = $carrierIdSwap;
110 54
        $this->pieces         = $pieces;
111 54
        $this->finalCarrierId = $finalCarrierId;
112 54
        $this->finalTrackUrl  = $finalTrackUrl;
113 54
    }
114
115
    /**
116
     * @return string
117
     */
118 27
    public function getPackageId(): string
119
    {
120 27
        return $this->packageId;
121
    }
122
123
    /**
124
     * @return string
125
     */
126 11
    public function getBatchId(): string
127
    {
128 11
        return $this->batchId;
129
    }
130
131
    /**
132
     * @return string
133
     */
134 29
    public function getCarrierId(): string
135
    {
136 29
        return $this->carrierId;
137
    }
138
139
    /**
140
     * @return string|null
141
     */
142 4
    public function getTrackUrl(): ?string
143
    {
144 4
        return $this->trackUrl;
145
    }
146
147
    /**
148
     * @return string|null
149
     */
150 4
    public function getLabelUrl(): ?string
151
    {
152 4
        return $this->labelUrl;
153
    }
154
155
    /**
156
     * @return string|null
157
     */
158 4
    public function getCarrierIdSwap(): ?string
159
    {
160 4
        return $this->carrierIdSwap;
161
    }
162
163
    /**
164
     * @return array<string>
165
     */
166 4
    public function getPieces(): array
167
    {
168 4
        return $this->pieces;
169
    }
170
171
    /**
172
     * @return string
173
     */
174 54
    public function getShipper(): string
175
    {
176 54
        return $this->shipper;
177
    }
178
179
    /**
180
     * @return string|null
181
     */
182 1
    public function getFinalCarrierId(): ?string
183
    {
184 1
        return $this->finalCarrierId;
185
    }
186
187
    /**
188
     * @return string|null
189
     */
190 1
    public function getFinalTrackUrl(): ?string
191
    {
192 1
        return $this->finalTrackUrl;
193
    }
194
195
    /**
196
     * @param string              $shipper
197
     * @param array<string,mixed> $data
198
     *
199
     * @return \Inspirum\Balikobot\Model\Values\OrderedPackage
200
     */
201 20
    public static function newInstanceFromData(string $shipper, array $data): self
202
    {
203 20
        return new self(
204 20
            $data['package_id'],
205
            $shipper,
206 20
            $data['eid'],
207 20
            $data['carrier_id'] ?? '',
208 20
            $data['track_url'] ?? null,
209 20
            $data['label_url'] ?? null,
210 20
            $data['carrier_id_swap'] ?? null,
211 20
            $data['pieces'] ?? [],
212 20
            $data['carrier_id_final'] ?? null,
213 20
            $data['track_url_final'] ?? null
214
        );
215
    }
216
}
217