Complex classes like Pessoa 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 Pessoa, and based on these observations, apply Extract Interface, too.
1 | <?php |
||
10 | class Pessoa implements \JsonSerializable |
||
11 | { |
||
12 | /** |
||
13 | * @var integer |
||
14 | */ |
||
15 | private $id; |
||
16 | |||
17 | /** |
||
18 | * @var Pessoa |
||
19 | */ |
||
20 | private $pessoaProprietario; |
||
21 | |||
22 | /** |
||
23 | * @var PessoaStatus |
||
24 | */ |
||
25 | private $pessoaStatus; |
||
26 | |||
27 | /** |
||
28 | * @var boolean |
||
29 | */ |
||
30 | private $pessoaJuridica; |
||
31 | |||
32 | /** |
||
33 | * @var string |
||
34 | */ |
||
35 | private $nomeRazaoSocial; |
||
36 | |||
37 | /** |
||
38 | * @var string |
||
39 | */ |
||
40 | private $sobrenomeNomeFantasia; |
||
41 | |||
42 | /** |
||
43 | * @var string |
||
44 | */ |
||
45 | private $foto; |
||
46 | |||
47 | /** |
||
48 | * @var string |
||
49 | */ |
||
50 | private $fotoUrl; |
||
51 | |||
52 | /** |
||
53 | * @var string |
||
54 | */ |
||
55 | private $cpfCnpj; |
||
56 | |||
57 | /** |
||
58 | * @var string |
||
59 | */ |
||
60 | private $email; |
||
61 | |||
62 | /** |
||
63 | * @var string |
||
64 | */ |
||
65 | private $senha; |
||
66 | |||
67 | /** |
||
68 | * @var string |
||
69 | */ |
||
70 | private $telefone1; |
||
71 | |||
72 | /** |
||
73 | * @var string |
||
74 | */ |
||
75 | private $telefone2; |
||
76 | |||
77 | /** |
||
78 | * @var string |
||
79 | */ |
||
80 | private $referenciaCliente; |
||
81 | |||
82 | /** |
||
83 | * @var boolean |
||
84 | */ |
||
85 | private $master; |
||
86 | |||
87 | /** |
||
88 | * @var string |
||
89 | */ |
||
90 | private $key; |
||
91 | |||
92 | /** |
||
93 | * @var float |
||
94 | */ |
||
95 | private $latitude; |
||
96 | |||
97 | /** |
||
98 | * @var float |
||
99 | */ |
||
100 | private $longitude; |
||
101 | |||
102 | /** |
||
103 | * @var string |
||
104 | */ |
||
105 | private $ip; |
||
106 | |||
107 | /** |
||
108 | * @var \DateTime |
||
109 | */ |
||
110 | private $data; |
||
111 | |||
112 | /** |
||
113 | * @var \DateTime |
||
114 | */ |
||
115 | private $dataLogin; |
||
116 | |||
117 | /** |
||
118 | * @var \DateTime |
||
119 | */ |
||
120 | private $dataLoginAnterior; |
||
121 | |||
122 | /** |
||
123 | * @var \DateTime |
||
124 | */ |
||
125 | private $dataLogout; |
||
126 | |||
127 | /** |
||
128 | * @var \DateTime |
||
129 | */ |
||
130 | private $dataAcesso; |
||
131 | |||
132 | /** |
||
133 | * @var \DateTime |
||
134 | */ |
||
135 | private $dataCheckIn; |
||
136 | |||
137 | /** |
||
138 | * @var array |
||
139 | */ |
||
140 | private $endereco; |
||
141 | |||
142 | /** |
||
143 | * Pessoa constructor. |
||
144 | */ |
||
145 | public function __construct() |
||
148 | |||
149 | /** |
||
150 | * @return int |
||
151 | */ |
||
152 | public function getId() |
||
156 | |||
157 | /** |
||
158 | * @param int $id |
||
159 | * @return Pessoa |
||
160 | */ |
||
161 | public function setId($id) |
||
166 | |||
167 | /** |
||
168 | * @return Pessoa |
||
169 | */ |
||
170 | public function getPessoaProprietario() |
||
174 | |||
175 | /** |
||
176 | * @param Pessoa $pessoaProprietario |
||
177 | * @return Pessoa |
||
178 | */ |
||
179 | public function setPessoaProprietario($pessoaProprietario) |
||
184 | |||
185 | /** |
||
186 | * @return array |
||
187 | */ |
||
188 | public function getPessoasDoProprietario() |
||
192 | |||
193 | /** |
||
194 | * @param array $pessoasDoProprietario |
||
195 | * @return Pessoa |
||
196 | */ |
||
197 | public function setPessoasDoProprietario($pessoasDoProprietario) |
||
202 | |||
203 | /** |
||
204 | * @return Pessoa |
||
205 | */ |
||
206 | public function getPessoaCheckInVendedor() |
||
210 | |||
211 | /** |
||
212 | * @param Pessoa $pessoaCheckInVendedor |
||
213 | * @return Pessoa |
||
214 | */ |
||
215 | public function setPessoaCheckInVendedor($pessoaCheckInVendedor) |
||
220 | |||
221 | /** |
||
222 | * @return array |
||
223 | */ |
||
224 | public function getPessoasClientes() |
||
228 | |||
229 | /** |
||
230 | * @param array $pessoasClientes |
||
231 | * @return Pessoa |
||
232 | */ |
||
233 | public function setPessoasClientes($pessoasClientes) |
||
238 | |||
239 | /** |
||
240 | * @return PessoaStatus |
||
241 | */ |
||
242 | public function getPessoaStatus() |
||
246 | |||
247 | /** |
||
248 | * @param PessoaStatus $pessoaStatus |
||
249 | * @return Pessoa |
||
250 | */ |
||
251 | public function setPessoaStatus($pessoaStatus) |
||
260 | |||
261 | /** |
||
262 | * @return boolean |
||
263 | */ |
||
264 | public function isPessoaJuridica() |
||
268 | |||
269 | /** |
||
270 | * @param boolean $pessoaJuridica |
||
271 | * @return Pessoa |
||
272 | */ |
||
273 | public function setPessoaJuridica($pessoaJuridica) |
||
278 | |||
279 | /** |
||
280 | * @return string |
||
281 | */ |
||
282 | public function getNomeRazaoSocial() |
||
286 | |||
287 | /** |
||
288 | * @param string $nomeRazaoSocial |
||
289 | * @return Pessoa |
||
290 | */ |
||
291 | public function setNomeRazaoSocial($nomeRazaoSocial) |
||
296 | |||
297 | /** |
||
298 | * @return string |
||
299 | */ |
||
300 | public function getSobrenomeNomeFantasia() |
||
304 | |||
305 | /** |
||
306 | * @param string $sobrenomeNomeFantasia |
||
307 | * @return Pessoa |
||
308 | */ |
||
309 | public function setSobrenomeNomeFantasia($sobrenomeNomeFantasia) |
||
314 | |||
315 | /** |
||
316 | * @return string |
||
317 | */ |
||
318 | public function getFoto() |
||
322 | |||
323 | /** |
||
324 | * @param string $foto |
||
325 | * @return Pessoa |
||
326 | */ |
||
327 | public function setFoto($foto) |
||
332 | |||
333 | /** |
||
334 | * @return string |
||
335 | */ |
||
336 | public function getFotoUrl() |
||
340 | |||
341 | /** |
||
342 | * @param string $fotoUrl |
||
343 | * @return Pessoa |
||
344 | */ |
||
345 | public function setFotoUrl($fotoUrl) |
||
350 | |||
351 | /** |
||
352 | * @return string |
||
353 | */ |
||
354 | public function getCpfCnpj() |
||
358 | |||
359 | /** |
||
360 | * @param string $cpfCnpj |
||
361 | * @return Pessoa |
||
362 | */ |
||
363 | public function setCpfCnpj($cpfCnpj) |
||
368 | |||
369 | /** |
||
370 | * @return string |
||
371 | */ |
||
372 | public function getEmail() |
||
376 | |||
377 | /** |
||
378 | * @param string $email |
||
379 | * @return Pessoa |
||
380 | */ |
||
381 | public function setEmail($email) |
||
386 | |||
387 | /** |
||
388 | * @return string |
||
389 | */ |
||
390 | public function getSenha() |
||
394 | |||
395 | /** |
||
396 | * @param string $senha |
||
397 | * @return Pessoa |
||
398 | */ |
||
399 | public function setSenha($senha) |
||
404 | |||
405 | /** |
||
406 | * @return string |
||
407 | */ |
||
408 | public function getTelefone1() |
||
412 | |||
413 | /** |
||
414 | * @param string $telefone1 |
||
415 | * @return Pessoa |
||
416 | */ |
||
417 | public function setTelefone1($telefone1) |
||
422 | |||
423 | /** |
||
424 | * @return string |
||
425 | */ |
||
426 | public function getTelefone2() |
||
430 | |||
431 | /** |
||
432 | * @param string $telefone2 |
||
433 | * @return Pessoa |
||
434 | */ |
||
435 | public function setTelefone2($telefone2) |
||
440 | |||
441 | /** |
||
442 | * @return string |
||
443 | */ |
||
444 | public function getReferenciaCliente() |
||
448 | |||
449 | /** |
||
450 | * @param string $referenciaCliente |
||
451 | * @return Pessoa |
||
452 | */ |
||
453 | public function setReferenciaCliente($referenciaCliente) |
||
458 | |||
459 | /** |
||
460 | * @return boolean |
||
461 | */ |
||
462 | public function isMaster() |
||
466 | |||
467 | /** |
||
468 | * @param boolean $master |
||
469 | * @return Pessoa |
||
470 | */ |
||
471 | public function setMaster($master) |
||
476 | |||
477 | /** |
||
478 | * @return string |
||
479 | */ |
||
480 | public function getKey() |
||
484 | |||
485 | /** |
||
486 | * @param string $key |
||
487 | * @return Pessoa |
||
488 | */ |
||
489 | public function setKey($key) |
||
494 | |||
495 | /** |
||
496 | * @return float |
||
497 | */ |
||
498 | public function getLatitude() |
||
502 | |||
503 | /** |
||
504 | * @param float $latitude |
||
505 | * @return Pessoa |
||
506 | */ |
||
507 | public function setLatitude($latitude) |
||
512 | |||
513 | /** |
||
514 | * @return float |
||
515 | */ |
||
516 | public function getLongitude() |
||
520 | |||
521 | /** |
||
522 | * @param float $longitude |
||
523 | * @return Pessoa |
||
524 | */ |
||
525 | public function setLongitude($longitude) |
||
530 | |||
531 | /** |
||
532 | * @return string |
||
533 | */ |
||
534 | public function getIp() |
||
538 | |||
539 | /** |
||
540 | * @param string $ip |
||
541 | * @return Pessoa |
||
542 | */ |
||
543 | public function setIp($ip) |
||
548 | |||
549 | /** |
||
550 | * @return \DateTime |
||
551 | */ |
||
552 | public function getData() |
||
556 | |||
557 | /** |
||
558 | * @param \DateTime $data |
||
559 | * @return Pessoa |
||
560 | */ |
||
561 | public function setData($data) |
||
566 | |||
567 | /** |
||
568 | * @return \DateTime |
||
569 | */ |
||
570 | public function getDataLogin() |
||
574 | |||
575 | /** |
||
576 | * @param \DateTime $dataLogin |
||
577 | * @return Pessoa |
||
578 | */ |
||
579 | public function setDataLogin($dataLogin) |
||
584 | |||
585 | /** |
||
586 | * @return \DateTime |
||
587 | */ |
||
588 | public function getDataLoginAnterior() |
||
592 | |||
593 | /** |
||
594 | * @param \DateTime $dataLoginAnterior |
||
595 | * @return Pessoa |
||
596 | */ |
||
597 | public function setDataLoginAnterior($dataLoginAnterior) |
||
602 | |||
603 | /** |
||
604 | * @return \DateTime |
||
605 | */ |
||
606 | public function getDataLogout() |
||
610 | |||
611 | /** |
||
612 | * @param \DateTime $dataLogout |
||
613 | * @return Pessoa |
||
614 | */ |
||
615 | public function setDataLogout($dataLogout) |
||
620 | |||
621 | /** |
||
622 | * @return \DateTime |
||
623 | */ |
||
624 | public function getDataAcesso() |
||
628 | |||
629 | /** |
||
630 | * @param \DateTime $dataAcesso |
||
631 | * @return Pessoa |
||
632 | */ |
||
633 | public function setDataAcesso($dataAcesso) |
||
638 | |||
639 | /** |
||
640 | * @return \DateTime |
||
641 | */ |
||
642 | public function getDataCheckIn() |
||
646 | |||
647 | /** |
||
648 | * @param \DateTime $dataCheckIn |
||
649 | * @return Pessoa |
||
650 | */ |
||
651 | public function setDataCheckIn($dataCheckIn) |
||
656 | |||
657 | /** |
||
658 | * @return array |
||
659 | */ |
||
660 | public function getEndereco() |
||
664 | |||
665 | /** |
||
666 | * @param array $endereco |
||
667 | * @return Pessoa |
||
668 | */ |
||
669 | public function setEndereco($endereco) |
||
674 | |||
675 | function jsonSerialize() |
||
704 | |||
705 | |||
706 | } |
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.
If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.