Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
1 | <?php |
||
20 | 1 | final class Configuration implements IConfiguration |
|
21 | { |
||
22 | |||
23 | const TEST = "test"; |
||
24 | const PRODUCTION = "production"; |
||
25 | |||
26 | |||
27 | /** @var string */ |
||
28 | private $mid; |
||
29 | |||
30 | /** @var string */ |
||
31 | private $rurl; |
||
32 | |||
33 | /** @var string */ |
||
34 | private $lang = 'sk'; |
||
35 | |||
36 | /** @var string */ |
||
37 | private $ipc; |
||
38 | |||
39 | /** @var string */ |
||
40 | private $key; |
||
41 | |||
42 | /** @var string */ |
||
43 | private $rem = ''; |
||
44 | |||
45 | /** @var LinkGenerator */ |
||
46 | private $linkGenerator; |
||
47 | |||
48 | /** @var string */ |
||
49 | private $mode = self::PRODUCTION; |
||
50 | |||
51 | /** @var string */ |
||
52 | private $buttonTemplate; |
||
53 | |||
54 | |||
55 | public function __construct(string $mid, $rurl, string $key, LinkGenerator $linkGenerator = NULL) |
||
64 | |||
65 | public function setMid(string $mid) : Configuration |
||
73 | |||
74 | public function setRurl($originalRurl) : Configuration |
||
75 | { |
||
76 | 1 | $supportedTypes = ['string', 'array']; |
|
77 | 1 | if (!in_array(gettype($originalRurl), $supportedTypes)) |
|
78 | 1 | throw new \PaySys\PaySys\ConfigurationException(sprintf("RURL type of '%s' is invalid. Must be %s.", gettype($originalRurl), implode(' or ', $supportedTypes))); |
|
79 | |||
80 | 1 | $rurl = $originalRurl; |
|
81 | 1 | if ($this->linkGenerator instanceof LinkGenerator) { |
|
82 | try { |
||
83 | if (is_string($originalRurl)) { |
||
84 | $rurl = $this->linkGenerator->link($originalRurl); |
||
85 | } elseif (is_array($originalRurl)) { |
||
86 | $rurl = $this->linkGenerator->link($originalRurl['dest'], @$originalRurl['params']); |
||
87 | } |
||
88 | } catch (Nette\Application\UI\InvalidLinkException $e) {} |
||
|
|||
89 | } |
||
90 | |||
91 | 1 | if (!Validator::isRurl($rurl)) |
|
92 | 1 | throw new \PaySys\PaySys\ConfigurationException(sprintf("RURL '%s' is invalid. Must be valid URL by RFC 1738.", $originalRurl)); |
|
93 | |||
94 | 1 | $this->rurl = $rurl; |
|
95 | 1 | return $this; |
|
96 | } |
||
97 | |||
98 | View Code Duplication | public function setKey(string $originalKey) : Configuration |
|
107 | |||
108 | public function setIpc(string $ipc = NULL) : Configuration |
||
120 | |||
121 | View Code Duplication | public function setLang(string $originalLang) : Configuration |
|
130 | |||
131 | public function setMode(string $mode) : Configuration |
||
139 | |||
140 | public function setRem(string $rem) : Configuration |
||
148 | |||
149 | public function setButtonTemplate(string $path) : Configuration |
||
157 | |||
158 | public function getButtonTemplate() : string |
||
162 | |||
163 | public function __call($method, $arguments) : string |
||
167 | |||
168 | private function getNormalizedKey(string $originalKey) : string |
||
182 | |||
183 | private function getIpAddress() : string |
||
198 | } |
||
199 |