Completed
Push — master ( f76772...1672bb )
by ARCANEDEV
07:47
created

TrackingManager::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 19
ccs 11
cts 11
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 17
nc 1
nop 8
crap 1

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 namespace Arcanedev\LaravelTracker;
2
3
use Arcanedev\LaravelTracker\Contracts\TrackingManager as TrackingManagerContract;
4
5
/**
6
 * Class     TrackingManager
7
 *
8
 * @package  Arcanedev\LaravelTracker
9
 * @author   ARCANEDEV <[email protected]>
10
 */
11
class TrackingManager implements TrackingManagerContract
12
{
13
    /* ------------------------------------------------------------------------------------------------
14
     |  Properties
15
     | ------------------------------------------------------------------------------------------------
16
     */
17
    /** @var Contracts\Trackers\CookieTracker */
18
    private $cookieTracker;
19
20
    /** @var Contracts\Trackers\DeviceTracker */
21
    private $deviceTracker;
22
23
    /** @var Contracts\Trackers\GeoIpTracker */
24
    private $geoIpTracker;
25
26
    /** @var Contracts\Trackers\LanguageTracker */
27
    private $languageTracker;
28
29
    /** @var Contracts\Trackers\RefererTracker */
30
    private $refererTracker;
31
32
    /** @var Contracts\Trackers\SessionTracker */
33
    private $sessionTracker;
34
35
    /** @var Contracts\Trackers\UserAgentTracker */
36
    private $userAgentTracker;
37
38
    /** @var Contracts\Trackers\UserTracker */
39
    private $userTracker;
40
41
    /* ------------------------------------------------------------------------------------------------
42
     |  Constructor
43
     | ------------------------------------------------------------------------------------------------
44
     */
45
    /**
46
     * TrackingManager constructor.
47
     *
48
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\CookieTracker     $cookieTracker
49
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\DeviceTracker     $deviceTracker
50
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\GeoIpTracker      $geoIpTracker
51
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\LanguageTracker   $languageTracker
52
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\RefererTracker    $refererTracker
53
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\SessionTracker    $sessionTracker
54
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\UserAgentTracker  $userAgentTracker
55
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\UserTracker       $userTracker
56
     */
57 24
    public function __construct(
58
        Contracts\Trackers\CookieTracker $cookieTracker,
59
        Contracts\Trackers\DeviceTracker $deviceTracker,
60
        Contracts\Trackers\GeoIpTracker $geoIpTracker,
61 3
        Contracts\Trackers\LanguageTracker $languageTracker,
62
        Contracts\Trackers\RefererTracker $refererTracker,
63
        Contracts\Trackers\SessionTracker $sessionTracker,
64
        Contracts\Trackers\UserAgentTracker $userAgentTracker,
65
        Contracts\Trackers\UserTracker $userTracker
66
    ) {
67 24
        $this->cookieTracker    = $cookieTracker;
68 24
        $this->deviceTracker    = $deviceTracker;
69 24
        $this->geoIpTracker     = $geoIpTracker;
70 24
        $this->languageTracker  = $languageTracker;
71 24
        $this->refererTracker   = $refererTracker;
72 24
        $this->sessionTracker   = $sessionTracker;
73 24
        $this->userAgentTracker = $userAgentTracker;
74 24
        $this->userTracker      = $userTracker;
75 24
    }
76
77
    /* ------------------------------------------------------------------------------------------------
78
     |  Getters & Setters
79
     | ------------------------------------------------------------------------------------------------
80
     */
81
    /**
82
     * Get the user agent tracker.
83
     *
84
     * @return Contracts\Trackers\UserAgentTracker
85
     */
86 6
    public function getUserAgentTracker()
87
    {
88 6
        return $this->userAgentTracker;
89
    }
90
91
    /* ------------------------------------------------------------------------------------------------
92
     |  Main Functions
93
     | ------------------------------------------------------------------------------------------------
94
     */
95
    /**
96
     * Track the user.
97
     *
98
     * @return int|null
99
     */
100 6
    public function trackUser()
101
    {
102 6
        return $this->userTracker->track();
103
    }
104
105
    /**
106
     * Track the device.
107
     *
108
     * @return int
109
     */
110 6
    public function trackDevice()
111
    {
112 6
        return $this->deviceTracker->track();
113
    }
114
115
    /**
116
     * Track the ip address.
117
     *
118
     * @param  string  $ipAddress
119
     *
120
     * @return int|null
121
     */
122 6
    public function trackGeoIp($ipAddress)
123
    {
124 6
        return $this->geoIpTracker->track($ipAddress);
125
    }
126
127
    /**
128
     * Track the user agent.
129
     *
130
     * @return int
131
     */
132 6
    public function trackUserAgent()
133
    {
134 6
        return $this->getUserAgentTracker()->track();
135
    }
136
137
    /**
138
     * Track the referer.
139
     *
140
     * @param  string  $refererUrl
141
     * @param  string  $pageUrl
142
     *
143
     * @return int|null
144
     */
145 6
    public function trackReferer($refererUrl, $pageUrl)
146
    {
147 6
        return $this->refererTracker->track($refererUrl, $pageUrl);
148
    }
149
150
    /**
151
     * Track the cookie.
152
     *
153
     * @param  mixed  $cookie
154
     *
155
     * @return int|null
156
     */
157 6
    public function trackCookie($cookie)
158
    {
159 6
        return $this->cookieTracker->track($cookie);
160
    }
161
162
    /**
163
     * Track the language.
164
     *
165
     * @return int
166
     */
167 6
    public function trackLanguage()
168
    {
169 6
        return $this->languageTracker->track();
170
    }
171
172
    /**
173
     * Track the session.
174
     *
175
     * @param  array  $data
176
     *
177
     * @return int
178
     */
179 6
    public function trackSession(array $data)
180
    {
181 6
        return $this->sessionTracker->track($data);
182
    }
183
184
    /**
185
     * Check the session data.
186
     *
187
     * @param  array  $data
188
     * @param  array  $currentData
189
     *
190
     * @return array
191
     */
192 6
    public function checkSessionData(array $data, array $currentData)
193
    {
194 6
        return $this->sessionTracker->checkData($data, $currentData);
195
    }
196
}
197