Passed
Push — master ( f4ebb6...c31285 )
by Gaël
11:14
created

ClientResource::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 77
Code Lines 38

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 38
nc 1
nop 37
dl 0
loc 77
rs 9.312
c 0
b 0
f 0

How to fix   Long Method    Many Parameters   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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 DansMaCulotte\Monetico\Resources;
4
5
class ClientResource
6
{
7
    /** @var array */
8
    public $data = [];
9
10
    /**
11
     * Client constructor.
12
     *
13
     * @param string|null $civility
14
     * @param string|null $name
15
     * @param string|null $firstName
16
     * @param string|null $lastName
17
     * @param string|null $middleName
18
     * @param string|null $address
19
     * @param string|null $addressLine1
20
     * @param string|null $addressLine2
21
     * @param string|null $addressLine3
22
     * @param string|null $city
23
     * @param string|null $postalCode
24
     * @param string|null $country
25
     * @param string|null $stateOrProvince
26
     * @param string|null $countrySubdivision
27
     * @param string|null $email
28
     * @param string|null $birthLastName
29
     * @param string|null $birthCity
30
     * @param string|null $birthPostalCode
31
     * @param string|null $birthCountry
32
     * @param string|null $birthStateOrProvince
33
     * @param string|null $birthCountrySubdivision
34
     * @param string|null $birthdate
35
     * @param string|null $phone
36
     * @param string|null $nationalIDNumber
37
     * @param string|null $suspiciousAccountActivity
38
     * @param string|null $authenticationMethod
39
     * @param string|null $authenticationTimestamp
40
     * @param string|null $priorAuthenticationMethod
41
     * @param string|null $priorAuthenticationTimestamp
42
     * @param string|null $paymentMeanAge
43
     * @param string|null $lastYearTransactions
44
     * @param string|null $last24HoursTransactions
45
     * @param string|null $addCardNbLast24Hours
46
     * @param string|null $last6MonthsPurchase
47
     * @param string|null $lastPasswordChange
48
     * @param string|null $accountAge
49
     * @param string|null $lastAccountModification
50
     */
51
    public function __construct(
52
        string $civility = null,
53
        string $name = null,
54
        string $firstName = null,
55
        string $lastName = null,
56
        string $middleName = null,
57
        string $address = null,
58
        string $addressLine1 = null,
59
        string $addressLine2 = null,
60
        string $addressLine3 = null,
61
        string $city = null,
62
        string $postalCode = null,
63
        string $country = null,
64
        string $stateOrProvince = null,
65
        string $countrySubdivision = null,
66
        string $email = null,
67
        string $birthLastName = null,
68
        string $birthCity = null,
69
        string $birthPostalCode = null,
70
        string $birthCountry = null,
71
        string $birthStateOrProvince = null,
72
        string $birthCountrySubdivision = null,
73
        string $birthdate = null,
74
        string $phone = null,
75
        string $nationalIDNumber = null,
76
        string $suspiciousAccountActivity = null,
77
        string $authenticationMethod = null,
78
        string $authenticationTimestamp = null,
79
        string $priorAuthenticationMethod = null,
80
        string $priorAuthenticationTimestamp = null,
81
        string $paymentMeanAge = null,
82
        string $lastYearTransactions = null,
83
        string $last24HoursTransactions = null,
84
        string $addCardNbLast24Hours = null,
85
        string $last6MonthsPurchase = null,
86
        string $lastPasswordChange = null,
87
        string $accountAge = null,
88
        string $lastAccountModification = null
89
    ) {
90
        $this->data = [
91
            'civility' => $civility,
92
            'name' => $name,
93
            'firstName' => $firstName,
94
            'lastName' => $lastName,
95
            'middleName' => $middleName,
96
            'address' => $address,
97
            'addressLine1' => $addressLine1,
98
            'addressLine2' => $addressLine2,
99
            'addressLine3' => $addressLine3,
100
            'city' => $city,
101
            'postalCode' => $postalCode,
102
            'country' => $country,
103
            'stateOrProvince' => $stateOrProvince,
104
            'countrySubdivision' => $countrySubdivision,
105
            'email' => $email,
106
            'birthLastName' => $birthLastName,
107
            'birthCity' => $birthCity,
108
            'birthPostalCode' => $birthPostalCode,
109
            'birthCountry' => $birthCountry,
110
            'birthStateOrProvince' => $birthStateOrProvince,
111
            'birthCountrySubdivision' => $birthCountrySubdivision,
112
            'birthdate' => $birthdate,
113
            'phone' => $phone,
114
            'nationalIDNumber' => $nationalIDNumber,
115
            'suspiciousAccountActivity' => $suspiciousAccountActivity,
116
            'authenticationMethod' => $authenticationMethod,
117
            'authenticationTimestamp' => $authenticationTimestamp,
118
            'priorAuthenticationMethod' => $priorAuthenticationMethod,
119
            'priorAuthenticationTimestamp' => $priorAuthenticationTimestamp,
120
            'paymentMeanAge' => $paymentMeanAge,
121
            'lastYearTransactions' => $lastYearTransactions,
122
            'last24HoursTransactions' => $last24HoursTransactions,
123
            'addCardNbLast24Hours' => $addCardNbLast24Hours,
124
            'last6MonthsPurchase' => $last6MonthsPurchase,
125
            'lastPasswordChange' => $lastPasswordChange,
126
            'accountAge' => $accountAge,
127
            'lastAccountModification' => $lastAccountModification,
128
        ];
129
    }
130
}
131