Failed Conditions
Pull Request — master (#229)
by
unknown
03:02
created

Address::createFromRequest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 16
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 13
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Sylius\ShopApiPlugin\Model;
6
7
use Symfony\Component\HttpFoundation\Request;
8
use Webmozart\Assert\Assert;
9
10
final class Address
11
{
12
    /**
13
     * @var integer
14
     */
15
    private $id;
16
17
    /**
18
     * @var string
19
     */
20
    private $firstName;
21
22
    /**
23
     * @var string
24
     */
25
    private $lastName;
26
27
    /**
28
     * @var string
29
     */
30
    private $city;
31
32
    /**
33
     * @var string
34
     */
35
    private $countryCode;
36
37
    /**
38
     * @var string
39
     */
40
    private $street;
41
42
    /**
43
     * @var string
44
     */
45
    private $postcode;
46
47
    /**
48
     * @var string
49
     */
50
    private $provinceName;
51
52
    /**
53
     * @var string
54
     */
55
    private $provinceCode;
56
57
    /**
58
     * @var string
59
     */
60
    private $company;
61
62
    /**
63
     * @var string
64
     */
65
    private $phoneNumber;
66
67
    /**
68
     * @param null $id
69
     * @param string $firstName
70
     * @param string $lastName
71
     * @param string $city
72
     * @param string $street
73
     * @param string $countryCode
74
     * @param string $postcode
75
     * @param string $provinceName
76
     * @param null $provinceCode
77
     * @param null $company
78
     * @param null $phoneNumber
79
     */
80
    private function __construct(
81
        $id = null,
82
        $firstName,
0 ignored issues
show
Coding Style introduced by
Parameters which have default values should be placed at the end.

If you place a parameter with a default value before a parameter with a default value, the default value of the first parameter will never be used as it will always need to be passed anyway:

// $a must always be passed; it's default value is never used.
function someFunction($a = 5, $b) { }
Loading history...
83
        $lastName,
84
        $city,
85
        $street,
86
        $countryCode,
87
        $postcode,
88
        $provinceName = null,
89
        $provinceCode = null,
90
        $phoneNumber = null,
91
        $company = null
92
    )
93
    {
94
        $this->id = $id;
95
        $this->firstName = $firstName;
96
        $this->lastName = $lastName;
97
        $this->city = $city;
98
        $this->street = $street;
99
        $this->countryCode = $countryCode;
100
        $this->postcode = $postcode;
101
        $this->provinceName = $provinceName;
102
        $this->provinceCode = $provinceCode;
103
        $this->phoneNumber = $phoneNumber;
104
        $this->company = $company;
105
    }
106
107
    /**
108
     * @param array $address
109
     *
110
     * @return Address
111
     */
112
    public static function createFromArray(array $address)
113
    {
114
        Assert::keyExists($address, 'firstName');
115
        Assert::keyExists($address, 'lastName');
116
        Assert::keyExists($address, 'city');
117
        Assert::keyExists($address, 'street');
118
        Assert::keyExists($address, 'countryCode');
119
        Assert::keyExists($address, 'postcode');
120
121
        return new self(
122
            $address['id'] ?? null,
123
            $address['firstName'],
124
            $address['lastName'],
125
            $address['city'],
126
            $address['street'],
127
            $address['countryCode'],
128
            $address['postcode'],
129
            $address['provinceName'] ?? null,
130
            $address['provinceCode'] ?? null,
131
            $address['phoneNumber'] ?? null,
132
            $address['company'] ?? null
133
        );
134
    }
135
136
    /**
137
     * @param Request $request
138
     *
139
     * @return Address
140
     */
141
    public static function createFromRequest(Request $request)
142
    {
143
        return new self(
144
            $request->attributes->get('id') ?? $request->request->get('id'),
145
            $request->request->get('firstName'),
146
            $request->request->get('lastName'),
147
            $request->request->get('city'),
148
            $request->request->get('street'),
149
            $request->request->get('countryCode'),
150
            $request->request->get('postcode'),
151
            $request->request->get('provinceName'),
152
            $request->request->get('provinceCode'),
153
            $request->request->get('phoneNumber'),
154
            $request->request->get('company')
155
        );
156
    }
157
158
    /**
159
     * @return mixed
160
     */
161
    public function id()
162
    {
163
        return $this->id;
164
    }
165
166
    /**
167
     * @return string
168
     */
169
    public function firstName()
170
    {
171
        return $this->firstName;
172
    }
173
174
    /**
175
     * @return string
176
     */
177
    public function lastName()
178
    {
179
        return $this->lastName;
180
    }
181
182
    /**
183
     * @return string
184
     */
185
    public function city()
186
    {
187
        return $this->city;
188
    }
189
190
    /**
191
     * @return string
192
     */
193
    public function street()
194
    {
195
        return $this->street;
196
    }
197
198
    /**
199
     * @return string
200
     */
201
    public function countryCode()
202
    {
203
        return $this->countryCode;
204
    }
205
206
    /**
207
     * @return string
208
     */
209
    public function postcode()
210
    {
211
        return $this->postcode;
212
    }
213
214
    /**
215
     * @return string
216
     */
217
    public function provinceName()
218
    {
219
        return $this->provinceName;
220
    }
221
222
    /**
223
     * @return string
224
     */
225
    public function provinceCode()
226
    {
227
        return $this->provinceCode;
228
    }
229
230
    /**
231
     * @return string
232
     */
233
    public function company()
234
    {
235
        return $this->company;
236
    }
237
238
    /**
239
     * @return string
240
     */
241
    public function phoneNumber()
242
    {
243
        return $this->phoneNumber;
244
    }
245
}
246