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 |