Api   B
last analyzed

Complexity

Total Complexity 45

Size/Duplication

Total Lines 321
Duplicated Lines 0 %

Coupling/Cohesion

Components 6
Dependencies 2
Metric Value
wmc 45
lcom 6
cbo 2
dl 0
loc 321
rs 7.4545

31 Methods

Rating   Name   Duplication   Size   Complexity  
A setMotd() 0 17 4
A setCrestEndpoint() 0 4 1
A setCorporationRoles() 0 4 1
A setItemGroups() 0 4 1
A setChannels() 0 4 1
A setCorporations() 0 4 1
A setAlliances() 0 4 1
A setItemTypes() 0 4 1
A setDecode() 0 4 1
A setBattleTheatres() 0 4 1
A setMarketPrices() 0 4 1
A setItemCategories() 0 4 1
A setRegions() 0 4 1
A setBloodlines() 0 4 1
A setMarketGroups() 0 4 1
A setSovereignty() 0 15 3
A setTournaments() 0 4 1
A setMap() 0 4 1
A setVirtualGoodStore() 0 4 1
A setServerVersion() 0 4 1
A setWars() 0 4 1
A setIncursions() 0 4 1
A setRaces() 0 4 1
A setAuthEndpoint() 0 4 1
A setServiceStatus() 0 17 4
A setUserCounts() 0 15 3
A setIndustry() 0 15 3
A setClients() 0 15 3
A setTime() 0 4 1
A setMarketTypes() 0 4 1
A setServerName() 0 4 1

How to fix   Complexity   

Complex Class

Complex classes like Api often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

While breaking up the class, it is a good idea to analyze how other classes use Api, and based on these observations, apply Extract Interface, too.

1
<?php
2
namespace Perry\Representation\Eve\v3;
3
4
use \Perry\Representation\Reference as Reference;
5
use \Perry\Representation\Uri as Uri;
6
use \Perry\Representation\Base as Base;
7
8
class Api extends Base
9
{
10
    public $motd;
11
12
    public $crestEndpoint;
13
14
    public $corporationRoles;
15
16
    public $itemGroups;
17
18
    public $channels;
19
20
    public $corporations;
21
22
    public $alliances;
23
24
    public $itemTypes;
25
26
    public $decode;
27
28
    public $battleTheatres;
29
30
    public $marketPrices;
31
32
    public $itemCategories;
33
34
    public $regions;
35
36
    public $bloodlines;
37
38
    public $marketGroups;
39
40
    public $sovereignty;
41
42
    public $tournaments;
43
44
    public $map;
45
46
    public $virtualGoodStore;
47
48
    public $serverVersion;
49
50
    public $wars;
51
52
    public $incursions;
53
54
    public $races;
55
56
    public $authEndpoint;
57
58
    public $serviceStatus;
59
60
    public $userCounts;
61
62
    public $industry;
63
64
    public $clients;
65
66
    public $time;
67
68
    public $marketTypes;
69
70
    public $serverName;
71
72
    // by Warringer\Types\Dict
73
    public function setMotd($motd)
74
    {
75
        // by Warringer\Types\Dict
76
        $converters = [];
77
        $converters['dust'] = function ($value) { return new Reference($value); };
78
        $converters['eve'] = function ($value) { return new Reference($value); };
79
        $converters['server'] = function ($value) { return new Reference($value); };
80
81
        $func = function ($value) use($converters) {
82
            $return = new \ArrayObject($value, \ArrayObject::ARRAY_AS_PROPS);
83
            $return['dust'] = isset($value->{'dust'}) ? $converters['dust']($value->{'dust'}) : null;
84
            $return['eve'] = isset($value->{'eve'}) ? $converters['eve']($value->{'eve'}) : null;
85
            $return['server'] = isset($value->{'server'}) ? $converters['server']($value->{'server'}) : null;
86
            return $return;
87
        };
88
        $this->motd = $func($motd);
89
    }
90
91
    // by Warringer\Types\Reference
92
    public function setCrestEndpoint($crestEndpoint)
93
    {
94
        $this->crestEndpoint = new Reference($crestEndpoint);
95
    }
96
97
    // by Warringer\Types\Reference
98
    public function setCorporationRoles($corporationRoles)
99
    {
100
        $this->corporationRoles = new Reference($corporationRoles);
101
    }
102
103
    // by Warringer\Types\Reference
104
    public function setItemGroups($itemGroups)
105
    {
106
        $this->itemGroups = new Reference($itemGroups);
107
    }
108
109
    // by Warringer\Types\Reference
110
    public function setChannels($channels)
111
    {
112
        $this->channels = new Reference($channels);
113
    }
114
115
    // by Warringer\Types\Reference
116
    public function setCorporations($corporations)
117
    {
118
        $this->corporations = new Reference($corporations);
119
    }
120
121
    // by Warringer\Types\Reference
122
    public function setAlliances($alliances)
123
    {
124
        $this->alliances = new Reference($alliances);
125
    }
126
127
    // by Warringer\Types\Reference
128
    public function setItemTypes($itemTypes)
129
    {
130
        $this->itemTypes = new Reference($itemTypes);
131
    }
132
133
    // by Warringer\Types\Reference
134
    public function setDecode($decode)
135
    {
136
        $this->decode = new Reference($decode);
137
    }
138
139
    // by Warringer\Types\Reference
140
    public function setBattleTheatres($battleTheatres)
141
    {
142
        $this->battleTheatres = new Reference($battleTheatres);
143
    }
144
145
    // by Warringer\Types\Reference
146
    public function setMarketPrices($marketPrices)
147
    {
148
        $this->marketPrices = new Reference($marketPrices);
149
    }
150
151
    // by Warringer\Types\Reference
152
    public function setItemCategories($itemCategories)
153
    {
154
        $this->itemCategories = new Reference($itemCategories);
155
    }
156
157
    // by Warringer\Types\Reference
158
    public function setRegions($regions)
159
    {
160
        $this->regions = new Reference($regions);
161
    }
162
163
    // by Warringer\Types\Reference
164
    public function setBloodlines($bloodlines)
165
    {
166
        $this->bloodlines = new Reference($bloodlines);
167
    }
168
169
    // by Warringer\Types\Reference
170
    public function setMarketGroups($marketGroups)
171
    {
172
        $this->marketGroups = new Reference($marketGroups);
173
    }
174
175
    // by Warringer\Types\Dict
176
    public function setSovereignty($sovereignty)
177
    {
178
        // by Warringer\Types\Dict
179
        $converters = [];
180
        $converters['campaigns'] = function ($value) { return new Reference($value); };
181
        $converters['structures'] = function ($value) { return new Reference($value); };
182
183
        $func = function ($value) use($converters) {
184
            $return = new \ArrayObject($value, \ArrayObject::ARRAY_AS_PROPS);
185
            $return['campaigns'] = isset($value->{'campaigns'}) ? $converters['campaigns']($value->{'campaigns'}) : null;
186
            $return['structures'] = isset($value->{'structures'}) ? $converters['structures']($value->{'structures'}) : null;
187
            return $return;
188
        };
189
        $this->sovereignty = $func($sovereignty);
190
    }
191
192
    // by Warringer\Types\Reference
193
    public function setTournaments($tournaments)
194
    {
195
        $this->tournaments = new Reference($tournaments);
196
    }
197
198
    // by Warringer\Types\Reference
199
    public function setMap($map)
200
    {
201
        $this->map = new Reference($map);
202
    }
203
204
    // by Warringer\Types\Reference
205
    public function setVirtualGoodStore($virtualGoodStore)
206
    {
207
        $this->virtualGoodStore = new Reference($virtualGoodStore);
208
    }
209
210
    // by Warringer\Types\String
211
    public function setServerVersion($serverVersion)
212
    {
213
        $this->serverVersion = $serverVersion;
214
    }
215
216
    // by Warringer\Types\Reference
217
    public function setWars($wars)
218
    {
219
        $this->wars = new Reference($wars);
220
    }
221
222
    // by Warringer\Types\Reference
223
    public function setIncursions($incursions)
224
    {
225
        $this->incursions = new Reference($incursions);
226
    }
227
228
    // by Warringer\Types\Reference
229
    public function setRaces($races)
230
    {
231
        $this->races = new Reference($races);
232
    }
233
234
    // by Warringer\Types\Reference
235
    public function setAuthEndpoint($authEndpoint)
236
    {
237
        $this->authEndpoint = new Reference($authEndpoint);
238
    }
239
240
    // by Warringer\Types\Dict
241
    public function setServiceStatus($serviceStatus)
242
    {
243
        // by Warringer\Types\Dict
244
        $converters = [];
245
        $converters['dust'] = function ($value) { return $value; };
246
        $converters['eve'] = function ($value) { return $value; };
247
        $converters['server'] = function ($value) { return $value; };
248
249
        $func = function ($value) use($converters) {
250
            $return = new \ArrayObject($value, \ArrayObject::ARRAY_AS_PROPS);
251
            $return['dust'] = isset($value->{'dust'}) ? $converters['dust']($value->{'dust'}) : null;
252
            $return['eve'] = isset($value->{'eve'}) ? $converters['eve']($value->{'eve'}) : null;
253
            $return['server'] = isset($value->{'server'}) ? $converters['server']($value->{'server'}) : null;
254
            return $return;
255
        };
256
        $this->serviceStatus = $func($serviceStatus);
257
    }
258
259
    // by Warringer\Types\Dict
260
    public function setUserCounts($userCounts)
261
    {
262
        // by Warringer\Types\Dict
263
        $converters = [];
264
        $converters['dust'] = function ($value) { return $value; };
265
        $converters['eve'] = function ($value) { return $value; };
266
267
        $func = function ($value) use($converters) {
268
            $return = new \ArrayObject($value, \ArrayObject::ARRAY_AS_PROPS);
269
            $return['dust'] = isset($value->{'dust'}) ? $converters['dust']($value->{'dust'}) : null;
270
            $return['eve'] = isset($value->{'eve'}) ? $converters['eve']($value->{'eve'}) : null;
271
            return $return;
272
        };
273
        $this->userCounts = $func($userCounts);
274
    }
275
276
    // by Warringer\Types\Dict
277
    public function setIndustry($industry)
278
    {
279
        // by Warringer\Types\Dict
280
        $converters = [];
281
        $converters['facilities'] = function ($value) { return new Reference($value); };
282
        $converters['systems'] = function ($value) { return new Reference($value); };
283
284
        $func = function ($value) use($converters) {
285
            $return = new \ArrayObject($value, \ArrayObject::ARRAY_AS_PROPS);
286
            $return['facilities'] = isset($value->{'facilities'}) ? $converters['facilities']($value->{'facilities'}) : null;
287
            $return['systems'] = isset($value->{'systems'}) ? $converters['systems']($value->{'systems'}) : null;
288
            return $return;
289
        };
290
        $this->industry = $func($industry);
291
    }
292
293
    // by Warringer\Types\Dict
294
    public function setClients($clients)
295
    {
296
        // by Warringer\Types\Dict
297
        $converters = [];
298
        $converters['dust'] = function ($value) { return new Reference($value); };
299
        $converters['eve'] = function ($value) { return new Reference($value); };
300
301
        $func = function ($value) use($converters) {
302
            $return = new \ArrayObject($value, \ArrayObject::ARRAY_AS_PROPS);
303
            $return['dust'] = isset($value->{'dust'}) ? $converters['dust']($value->{'dust'}) : null;
304
            $return['eve'] = isset($value->{'eve'}) ? $converters['eve']($value->{'eve'}) : null;
305
            return $return;
306
        };
307
        $this->clients = $func($clients);
308
    }
309
310
    // by Warringer\Types\Reference
311
    public function setTime($time)
312
    {
313
        $this->time = new Reference($time);
314
    }
315
316
    // by Warringer\Types\Reference
317
    public function setMarketTypes($marketTypes)
318
    {
319
        $this->marketTypes = new Reference($marketTypes);
320
    }
321
322
    // by Warringer\Types\String
323
    public function setServerName($serverName)
324
    {
325
        $this->serverName = $serverName;
326
    }
327
328
}
329