Toggl::__construct()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 1

Importance

Changes 5
Bugs 0 Features 2
Metric Value
c 5
b 0
f 2
dl 0
loc 26
ccs 13
cts 13
cp 1
rs 8.8571
cc 1
eloc 23
nc 1
nop 11
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
2
3
namespace Marek\Toggable;
4
5
use Marek\Toggable\API\Toggl\AuthenticationServiceInterface;
6
use Marek\Toggable\API\Toggl\ClientServiceInterface;
7
use Marek\Toggable\API\Toggl\DashboardServiceInterface;
8
use Marek\Toggable\API\Toggl\ProjectServiceInterface;
9
use Marek\Toggable\API\Toggl\ProjectUsersServiceInterface;
10
use Marek\Toggable\API\Toggl\TagServiceInterface;
11
use Marek\Toggable\API\Toggl\TaskServiceInterface;
12
use Marek\Toggable\API\Toggl\TimeEntryServiceInterface;
13
use Marek\Toggable\API\Toggl\UserServiceInterface;
14
use Marek\Toggable\API\Toggl\WorkspaceServiceInterface;
15
use Marek\Toggable\API\Toggl\WorkspaceUsersServiceInterface;
16
17
/**
18
 * Class Toggl
19
 * @package Marek\Toggable
20
 */
21
class Toggl implements TogglInterface
22
{
23
    /**
24
     * @var \Marek\Toggable\API\Toggl\ClientServiceInterface
25
     */
26
    private $clientService;
27
    
28
    /**
29
     * @var \Marek\Toggable\API\Toggl\WorkspaceServiceInterface
30
     */
31
    private $workspaceService;
32
33
    /**
34
     * @var \Marek\Toggable\API\Toggl\AuthenticationServiceInterface
35
     */
36
    private $authenticationService;
37
38
    /**
39
     * @var \Marek\Toggable\API\Toggl\DashboardServiceInterface
40
     */
41
    private $dashboardService;
42
43
    /**
44
     * @var \Marek\Toggable\API\Toggl\ProjectServiceInterface
45
     */
46
    private $projectService;
47
48
    /**
49
     * @var \Marek\Toggable\API\Toggl\ProjectUsersServiceInterface
50
     */
51
    private $projectUsersService;
52
53
    /**
54
     * @var \Marek\Toggable\API\Toggl\TagServiceInterface
55
     */
56
    private $tagService;
57
58
    /**
59
     * @var \Marek\Toggable\API\Toggl\TaskServiceInterface
60
     */
61
    private $taskService;
62
63
    /**
64
     * @var \Marek\Toggable\API\Toggl\TimeEntryServiceInterface
65
     */
66
    private $timeEntryService;
67
68
    /**
69
     * @var \Marek\Toggable\API\Toggl\UserServiceInterface
70
     */
71
    private $userService;
72
73
    /**
74
     * @var \Marek\Toggable\API\Toggl\WorkspaceUsersServiceInterface
75
     */
76
    private $workspaceUsersService;
77
78
    /**
79
     * Toggl constructor.
80
     *
81
     * @param \Marek\Toggable\API\Toggl\AuthenticationServiceInterface $authenticationService
82
     * @param \Marek\Toggable\API\Toggl\ClientServiceInterface $clientService
83
     * @param \Marek\Toggable\API\Toggl\DashboardServiceInterface $dashboardService
84
     * @param \Marek\Toggable\API\Toggl\ProjectServiceInterface $projectService
85
     * @param \Marek\Toggable\API\Toggl\ProjectUsersServiceInterface $projectUsersService
86
     * @param \Marek\Toggable\API\Toggl\TagServiceInterface $tagService
87
     * @param \Marek\Toggable\API\Toggl\TaskServiceInterface $taskService
88
     * @param \Marek\Toggable\API\Toggl\TimeEntryServiceInterface $timeEntryService
89
     * @param \Marek\Toggable\API\Toggl\UserServiceInterface $userService
90
     * @param \Marek\Toggable\API\Toggl\WorkspaceServiceInterface $workspaceService
91
     * @param \Marek\Toggable\API\Toggl\WorkspaceUsersServiceInterface $workspaceUsersService
92
     */
93 13
    public function __construct(
94
        AuthenticationServiceInterface $authenticationService,
95
        ClientServiceInterface $clientService,
96
        DashboardServiceInterface $dashboardService,
97
        ProjectServiceInterface $projectService,
98
        ProjectUsersServiceInterface $projectUsersService,
99
        TagServiceInterface $tagService,
100
        TaskServiceInterface $taskService,
101
        TimeEntryServiceInterface $timeEntryService,
102
        UserServiceInterface $userService,
103
        WorkspaceServiceInterface $workspaceService,
104
        WorkspaceUsersServiceInterface $workspaceUsersService
105
    )
106
    {
107 13
        $this->clientService = $clientService;
108 13
        $this->workspaceService = $workspaceService;
109 13
        $this->authenticationService = $authenticationService;
110 13
        $this->dashboardService = $dashboardService;
111 13
        $this->projectService = $projectService;
112 13
        $this->projectUsersService = $projectUsersService;
113 13
        $this->tagService = $tagService;
114 13
        $this->taskService = $taskService;
115 13
        $this->timeEntryService = $timeEntryService;
116 13
        $this->userService = $userService;
117 13
        $this->workspaceUsersService = $workspaceUsersService;
118 13
    }
119
120
    /**
121
     * {@inheritdoc}
122
     */
123 1
    public function getClientService()
124
    {
125 1
        return $this->clientService;
126
    }
127
128
    /**
129
     * {@inheritdoc}
130
     */
131 1
    public function getWorkspaceService()
132
    {
133 1
        return $this->workspaceService;
134
    }
135
136
    /**
137
     * {@inheritdoc}
138
     */
139 1
    public function getAuthenticationService()
140
    {
141 1
        return $this->authenticationService;
142
    }
143
144
    /**
145
     * @inheritDoc
146
     */
147 1
    public function getDashboardService()
148
    {
149 1
        return $this->dashboardService;
150
    }
151
152
    /**
153
     * @inheritDoc
154
     */
155 1
    public function getWorkspaceUsersService()
156
    {
157 1
        return $this->workspaceUsersService;
158
    }
159
160
    /**
161
     * @inheritDoc
162
     */
163 1
    public function getUserService()
164
    {
165 1
        return $this->userService;
166
    }
167
168
    /**
169
     * @inheritDoc
170
     */
171 1
    public function getProjectService()
172
    {
173 1
        return $this->projectService;
174
    }
175
176
    /**
177
     * @inheritDoc
178
     */
179 1
    public function getProjectUsersService()
180
    {
181 1
        return $this->projectUsersService;
182
    }
183
184
    /**
185
     * @inheritDoc
186
     */
187 1
    public function getTagService()
188
    {
189 1
        return $this->tagService;
190
    }
191
192
    /**
193
     * @inheritDoc
194
     */
195 1
    public function getTaskService()
196
    {
197 1
        return $this->taskService;
198
    }
199
200
    /**
201
     * @inheritDoc
202
     */
203 1
    public function getTimeEntryService()
204
    {
205 1
        return $this->timeEntryService;
206
    }
207
}
208