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 |
||
21 | class EntryIdResolver extends AbstractListenerAggregate |
||
22 | { |
||
23 | /** |
||
24 | * Имя параметра в конфиги модуля, по которому можно получить имя менеджера wf |
||
25 | * |
||
26 | * @var string |
||
27 | */ |
||
28 | const WORKFLOW_MANAGER_NAME = 'workflowManagerName'; |
||
29 | |||
30 | /** |
||
31 | * Имя параметра в конфиге модуля, по которому можно получить имя wf |
||
32 | * |
||
33 | * @var string |
||
34 | */ |
||
35 | const WORKFLOW_NAME = 'workflowName'; |
||
36 | |||
37 | /** |
||
38 | * Имя параметра в конфиге модуля, по которому можно конфиг описывающий какие классы и какие имена параметров роуетера |
||
39 | * используется, для получения entryId |
||
40 | * |
||
41 | * @var string |
||
42 | */ |
||
43 | const MAP = 'map'; |
||
44 | |||
45 | /** |
||
46 | * Имя параметра в карте(@see const MAP), по которому можно получить класс сущности |
||
47 | * |
||
48 | * @var string |
||
49 | */ |
||
50 | const ENTITY_CLASS_NAME = 'entityClassName'; |
||
51 | |||
52 | /** |
||
53 | * Имя параметра в карте(@see const MAP), по которому можно получить имя параметра роутера содержащего id сущности |
||
54 | * |
||
55 | * @var string |
||
56 | */ |
||
57 | const ROUTER_PARAM_NAME = 'routerParamName'; |
||
58 | |||
59 | /** |
||
60 | * Сервис реализующий функционал, для привязки процессов wf и информации о объектаъ |
||
61 | * |
||
62 | * @var EntryToObjectsService |
||
63 | */ |
||
64 | protected $entryToObjectsService; |
||
65 | |||
66 | /** |
||
67 | * Настройки модуля |
||
68 | * |
||
69 | * @var ModuleOptions |
||
70 | */ |
||
71 | protected $moduleOptions; |
||
72 | |||
73 | /** |
||
74 | * Индекс для маппинга |
||
75 | * |
||
76 | * @var null|array |
||
77 | */ |
||
78 | protected $indexMetadata; |
||
79 | |||
80 | /** |
||
81 | * @var MvcEvent |
||
82 | */ |
||
83 | protected $mvcEvent; |
||
84 | |||
85 | /** |
||
86 | * EntryIdResolver constructor. |
||
87 | * |
||
88 | * @param array $options |
||
89 | */ |
||
90 | public function __construct(array $options = []) |
||
99 | |||
100 | /** |
||
101 | * @param EntryToObjectsService $entryToObjectsService |
||
102 | * @param ModuleOptions $moduleOptions |
||
103 | * @param MvcEvent $mvcEvent |
||
104 | */ |
||
105 | protected function init( |
||
114 | |||
115 | /** |
||
116 | * @param EventManagerInterface $events |
||
117 | */ |
||
118 | public function attach(EventManagerInterface $events) |
||
122 | |||
123 | /** |
||
124 | * Обработчик содержащий логику получения entryId |
||
125 | * |
||
126 | * @param ResolveEntryIdEventInterface $resolveEntryIdEvent |
||
127 | * |
||
128 | * |
||
129 | * @return null|string |
||
130 | * |
||
131 | * @throws \OldTown\Workflow\ZF2\Toolkit\EntryToObjects\Exception\InvalidGetEntryByObjectsInfoException |
||
132 | * @throws \OldTown\Workflow\ZF2\Toolkit\WorkflowRunParams\Exception\InvalidWorkflowEntryToObjectMetadataException |
||
133 | * @throws \Zend\Serializer\Exception\ExceptionInterface |
||
134 | */ |
||
135 | public function onResolveEntryId(ResolveEntryIdEventInterface $resolveEntryIdEvent) |
||
168 | |||
169 | /** |
||
170 | * @return array|null |
||
171 | * |
||
172 | * @throws Exception\InvalidWorkflowEntryToObjectMetadataException |
||
173 | */ |
||
174 | public function getIndexMetadata() |
||
237 | |||
238 | /** |
||
239 | * @param array|null $indexMetadata |
||
240 | * |
||
241 | * @return $this |
||
242 | */ |
||
243 | public function setIndexMetadata(array $indexMetadata = null) |
||
249 | |||
250 | |||
251 | /** |
||
252 | * Сервис реализующий функционал, для привязки процессов wf и информации о объектаъ |
||
253 | * |
||
254 | * @return EntryToObjectsService |
||
255 | */ |
||
256 | public function getEntryToObjectsService() |
||
260 | |||
261 | /** |
||
262 | * Устанавливает сервис реализующий функционал, для привязки процессов wf и информации о объектаъ |
||
263 | * |
||
264 | * @param EntryToObjectsService $entryToObjectsService |
||
265 | * |
||
266 | * @return $this |
||
267 | */ |
||
268 | public function setEntryToObjectsService(EntryToObjectsService $entryToObjectsService) |
||
274 | |||
275 | /** |
||
276 | * Настройки модуля |
||
277 | * |
||
278 | * @return ModuleOptions |
||
279 | */ |
||
280 | public function getModuleOptions() |
||
284 | |||
285 | /** |
||
286 | * Устанавливает настройки модуля |
||
287 | * |
||
288 | * @param ModuleOptions $moduleOptions |
||
289 | * |
||
290 | * @return $this |
||
291 | */ |
||
292 | public function setModuleOptions(ModuleOptions $moduleOptions) |
||
298 | |||
299 | /** |
||
300 | * @return MvcEvent |
||
301 | */ |
||
302 | public function getMvcEvent() |
||
306 | |||
307 | /** |
||
308 | * @param MvcEvent $mvcEvent |
||
309 | * |
||
310 | * @return $this |
||
311 | */ |
||
312 | public function setMvcEvent(MvcEvent $mvcEvent) |
||
318 | } |
||
319 |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.