TimeEntryDtoImpl::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

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

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
declare(strict_types=1);
4
5
namespace JDecool\Clockify\Model;
6
7
class TimeEntryDtoImpl
8
{
9
    private $billable;
10
    private $description;
11
    private $id;
12
    private $isLocked;
13
    private $projectId;
14
    private $tagIds;
15
    private $taskId;
16
    private $timeInterval;
17
    private $userId;
18
    private $workspaceId;
19
20
    public static function fromArray(array $data): self
21
    {
22
        return new self(
23
            $data['billable'],
24
            $data['description'],
25
            $data['id'],
26
            $data['isLocked'],
27
            $data['projectId'] ? $data['projectId'] : '',
28
            $data['tagIds'] ? $data['tagIds'] : [],
29
            $data['taskId'] ? $data['taskId'] : '',
30
            TimeIntervalDto::fromArray($data['timeInterval']),
31
            $data['userId'],
32
            $data['workspaceId']
33
        );
34
    }
35
36
    /**
37
     * @param string[] $tagIds
38
     */
39
    public function __construct(
40
        bool $billable,
41
        string $description,
42
        string $id,
43
        bool $isLocked,
44
        string $projectId,
45
        array $tagIds,
46
        string $taskId,
47
        TimeIntervalDto $timeInterval,
48
        string $userId,
49
        string $workspaceId
50
    ) {
51
        $this->billable = $billable;
52
        $this->description = $description;
53
        $this->id = $id;
54
        $this->isLocked = $isLocked;
55
        $this->projectId = $projectId;
56
        $this->tagIds = $tagIds;
57
        $this->taskId = $taskId;
58
        $this->timeInterval = $timeInterval;
59
        $this->userId = $userId;
60
        $this->workspaceId = $workspaceId;
61
    }
62
63
    public function billable(): bool
64
    {
65
        return $this->billable;
66
    }
67
68
    public function description(): string
69
    {
70
        return $this->description;
71
    }
72
73
    public function id(): string
74
    {
75
        return $this->id;
76
    }
77
78
    public function isLocked(): bool
79
    {
80
        return $this->isLocked;
81
    }
82
83
    public function projectId(): string
84
    {
85
        return $this->projectId;
86
    }
87
88
    /**
89
     * @return string[]
90
     */
91
    public function tagIds()
92
    {
93
        return $this->tagIds;
94
    }
95
96
    public function taskId(): string
97
    {
98
        return $this->taskId;
99
    }
100
101
    public function timeInterval(): TimeIntervalDto
102
    {
103
        return $this->timeInterval;
104
    }
105
106
    public function userId(): string
107
    {
108
        return $this->userId;
109
    }
110
111
    public function workspaceId(): string
112
    {
113
        return $this->workspaceId;
114
    }
115
}
116