Comment::fromProperties()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 33
Code Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 33
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 30
nc 1
nop 13

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
/*
4
 * This file is part of the Stack Exchange Api Client library.
5
 *
6
 * (c) Beñat Espiña <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
/*
14
 * This file is part of the Stack Exchange Api Client library.
15
 *
16
 * (c) Beñat Espiña <[email protected]>
17
 *
18
 * For the full copyright and license information, please view the LICENSE
19
 * file that was distributed with this source code.
20
 */
21
22
namespace BenatEspina\StackExchangeApiClient\Model;
23
24
/**
25
 * The comment model class.
26
 *
27
 * @author Beñat Espiña <[email protected]>
28
 */
29
class Comment implements Model
30
{
31
    const POST_TYPES = ['question', 'answer'];
32
33
    protected $id;
34
    protected $body;
35
    protected $bodyMarkdown;
36
    protected $canFlag;
37
    protected $creationDate;
38
    protected $edited;
39
    protected $link;
40
    protected $owner;
41
    protected $postId;
42
    protected $postType;
43
    protected $replyToUser;
44
    protected $score;
45
    protected $upvoted;
46
47
    public static function fromProperties(
48
        $id,
49
        $body,
50
        $bodyMarkdown,
51
        $canFlag,
52
        \DateTimeInterface $creationDate,
53
        $edited,
54
        $link,
55
        $postId,
56
        $postType,
57
        $score,
58
        $upvoted,
59
        ShallowUser $owner = null,
60
        ShallowUser $replyToUser = null
61
    ) {
62
        $instance = new self();
63
        $instance
64
            ->setId($id)
65
            ->setBody($body)
66
            ->setBodyMarkdown($bodyMarkdown)
67
            ->setCanFlag($canFlag)
68
            ->setCreationDate($creationDate)
69
            ->setEdited($edited)
70
            ->setLink($link)
71
            ->setOwner($owner)
72
            ->setPostId($postId)
73
            ->setPostType($postType)
74
            ->setReplyToUser($replyToUser)
75
            ->setScore($score)
76
            ->setUpvoted($upvoted);
77
78
        return $instance;
79
    }
80
81
    public static function fromJson(array $data)
82
    {
83
        $instance = new self();
84
        $instance
85
            ->setId(array_key_exists('comment_id', $data) ? $data['comment_id'] : null)
86
            ->setBody(array_key_exists('body', $data) ? $data['body'] : null)
87
            ->setBodyMarkdown(array_key_exists('body_markdown', $data) ? $data['body_markdown'] : null)
88
            ->setCanFlag(array_key_exists('can_flag', $data) ? $data['can_flag'] : null)
89
            ->setCreationDate(
90
                array_key_exists('creation_date', $data)
91
                    ? new \DateTimeImmutable('@' . $data['creation_date'])
92
                    : null
93
            )
94
            ->setEdited(array_key_exists('edited', $data) ? $data['edited'] : null)
95
            ->setLink(array_key_exists('link', $data) ? $data['link'] : null)
96
            ->setOwner(array_key_exists('owner', $data) ? ShallowUser::fromJson($data['owner']) : null)
97
            ->setPostId(array_key_exists('postId', $data) ? $data['postId'] : null)
98
            ->setPostType(array_key_exists('post_type', $data) ? $data['post_type'] : null)
99
            ->setReplyToUser(array_key_exists(
100
                'reply_to_user', $data)
101
                ? ShallowUser::fromJson($data['reply_to_user'])
102
                : null
103
            )
104
            ->setScore(array_key_exists('score', $data) ? $data['score'] : null)
105
            ->setUpvoted(array_key_exists('upvoted', $data) ? $data['upvoted'] : null);
106
107
        return $instance;
108
    }
109
110
    public function getId()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
111
    {
112
        return $this->id;
113
    }
114
115
    public function setId($id)
116
    {
117
        $this->id = $id;
118
119
        return $this;
120
    }
121
122
    public function getBody()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
123
    {
124
        return $this->body;
125
    }
126
127
    public function setBody($body)
128
    {
129
        $this->body = $body;
130
131
        return $this;
132
    }
133
134
    public function getBodyMarkdown()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
135
    {
136
        return $this->bodyMarkdown;
137
    }
138
139
    public function setBodyMarkdown($bodyMarkdown)
140
    {
141
        $this->bodyMarkdown = $bodyMarkdown;
142
143
        return $this;
144
    }
145
146
    public function getCanFlag()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
147
    {
148
        return $this->canFlag;
149
    }
150
151
    public function setCanFlag($canFlag)
152
    {
153
        $this->canFlag = $canFlag;
154
155
        return $this;
156
    }
157
158
    public function getCreationDate()
159
    {
160
        return $this->creationDate;
161
    }
162
163
    public function setCreationDate(\DateTimeInterface $creationDate)
164
    {
165
        $this->creationDate = $creationDate;
166
167
        return $this;
168
    }
169
170
    public function getEdited()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
171
    {
172
        return $this->edited;
173
    }
174
175
    public function setEdited($edited)
176
    {
177
        $this->edited = $edited;
178
179
        return $this;
180
    }
181
182
    public function getLink()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
183
    {
184
        return $this->link;
185
    }
186
187
    public function setLink($link)
188
    {
189
        $this->link = $link;
190
191
        return $this;
192
    }
193
194
    public function getOwner()
195
    {
196
        return $this->owner;
197
    }
198
199
    public function setOwner(ShallowUser $owner = null)
200
    {
201
        $this->owner = $owner;
202
203
        return $this;
204
    }
205
206
    public function getPostId()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
207
    {
208
        return $this->postId;
209
    }
210
211
    public function setPostId($postId)
212
    {
213
        $this->postId = $postId;
214
215
        return $this;
216
    }
217
218
    public function getPostType()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
219
    {
220
        return $this->postType;
221
    }
222
223
    public function setPostType($postType)
224
    {
225
        if (in_array($postType, self::POST_TYPES, true)) {
226
            $this->postType = $postType;
227
        }
228
229
        return $this;
230
    }
231
232
    public function getReplyToUser()
233
    {
234
        return $this->replyToUser;
235
    }
236
237
    public function setReplyToUser(ShallowUser $replyToUser = null)
238
    {
239
        $this->replyToUser = $replyToUser;
240
241
        return $this;
242
    }
243
244
    public function getScore()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
245
    {
246
        return $this->score;
247
    }
248
249
    public function setScore($score)
250
    {
251
        $this->score = $score;
252
253
        return $this;
254
    }
255
256
    public function getUpvoted()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
257
    {
258
        return $this->upvoted;
259
    }
260
261
    public function setUpvoted($upvoted)
262
    {
263
        $this->upvoted = $upvoted;
264
265
        return $this;
266
    }
267
}
268