1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* @link https://github.com/nnx-framework/jms-serializer-module |
4
|
|
|
* @author Malofeykin Andrey <[email protected]> |
5
|
|
|
*/ |
6
|
|
|
namespace Nnx\JmsSerializerModule\Options; |
7
|
|
|
|
8
|
|
|
use Zend\Stdlib\AbstractOptions; |
9
|
|
|
use Nnx\ModuleOptions\ModuleOptionsInterface; |
10
|
|
|
|
11
|
|
|
|
12
|
|
|
/** |
13
|
|
|
* Class ModuleOptions |
14
|
|
|
* |
15
|
|
|
* @package Nnx\JmsSerializerModule\Options |
16
|
|
|
*/ |
17
|
|
|
class ModuleOptions extends AbstractOptions implements ModuleOptionsInterface |
18
|
|
|
{ |
19
|
|
|
/** |
20
|
|
|
* Данные для конфига сериалайзеров |
21
|
|
|
* |
22
|
|
|
* @var array |
23
|
|
|
*/ |
24
|
|
|
protected $serializers = []; |
25
|
|
|
|
26
|
|
|
/** |
27
|
|
|
* Конфиги сериалайзеров |
28
|
|
|
* |
29
|
|
|
* @var SerializerOptions[] |
30
|
|
|
*/ |
31
|
|
|
protected $serializersOptions = []; |
32
|
|
|
|
33
|
|
|
/** |
34
|
|
|
* Данные для фабрик метеданных сериалайзеров |
35
|
|
|
* |
36
|
|
|
* @var array |
37
|
|
|
*/ |
38
|
|
|
protected $metadataFactories = []; |
39
|
|
|
|
40
|
|
|
/** |
41
|
|
|
* Конфиги для фабрик метаданных |
42
|
|
|
* |
43
|
|
|
* @var PluginOptions[] |
44
|
|
|
*/ |
45
|
|
|
protected $metadataFactoriesOptions = []; |
46
|
|
|
|
47
|
|
|
/** |
48
|
|
|
* Данные для хранилища хенделеров сериалайзера |
49
|
|
|
* |
50
|
|
|
* @var array |
51
|
|
|
*/ |
52
|
|
|
protected $handlerRegistries = []; |
53
|
|
|
|
54
|
|
|
/** |
55
|
|
|
* Хранилища хенделеров сериалайзера |
56
|
|
|
* |
57
|
|
|
* @var PluginOptions[] |
58
|
|
|
*/ |
59
|
|
|
protected $handlerRegistriesOptions = []; |
60
|
|
|
|
61
|
|
|
/** |
62
|
|
|
* Данные описывающие драйверы метаданных |
63
|
|
|
* |
64
|
|
|
* @var array |
65
|
|
|
*/ |
66
|
|
|
protected $metadataDrivers = []; |
67
|
|
|
|
68
|
|
|
/** |
69
|
|
|
* Конфиги драйверов метаданных |
70
|
|
|
* |
71
|
|
|
* @var PluginOptions[] |
72
|
|
|
*/ |
73
|
|
|
protected $metadataDriversOptions = []; |
74
|
|
|
|
75
|
|
|
/** |
76
|
|
|
* Данные описывающие конструкторы объектов |
77
|
|
|
* |
78
|
|
|
* @var array |
79
|
|
|
*/ |
80
|
|
|
protected $objectConstructors = []; |
81
|
|
|
|
82
|
|
|
/** |
83
|
|
|
* Конфиги конструкторов объектов |
84
|
|
|
* |
85
|
|
|
* @var PluginOptions[] |
86
|
|
|
*/ |
87
|
|
|
protected $objectConstructorsOptions = []; |
88
|
|
|
|
89
|
|
|
/** |
90
|
|
|
* Набор плагинов используемх для сериализации |
91
|
|
|
* |
92
|
|
|
* @var array |
93
|
|
|
*/ |
94
|
|
|
protected $serializationVisitors = []; |
95
|
|
|
|
96
|
|
|
/** |
97
|
|
|
* Набор плагинов используемх для десериализации |
98
|
|
|
* |
99
|
|
|
* @var array |
100
|
|
|
*/ |
101
|
|
|
protected $deserializationVisitors = []; |
102
|
|
|
|
103
|
|
|
/** |
104
|
|
|
* Набор данных описывающих диспетчеры событий |
105
|
|
|
* |
106
|
|
|
* @var array |
107
|
|
|
*/ |
108
|
|
|
protected $eventDispatchers = []; |
109
|
|
|
|
110
|
|
|
/** |
111
|
|
|
* Устанавливает конфиги описывающие диспетчеры событий |
112
|
|
|
* |
113
|
|
|
* @var array |
114
|
|
|
*/ |
115
|
|
|
protected $eventDispatchersOptions = []; |
116
|
|
|
|
117
|
|
|
|
118
|
|
|
/** |
119
|
|
|
* Набор данных описывающих парсеры типов |
120
|
|
|
* |
121
|
|
|
* @var array |
122
|
|
|
*/ |
123
|
|
|
protected $typeParsers = []; |
124
|
|
|
|
125
|
|
|
/** |
126
|
|
|
* Устанавливает конфиги описывающие парсеры типов данных |
127
|
|
|
* |
128
|
|
|
* @var array |
129
|
|
|
*/ |
130
|
|
|
protected $typeParsersOptions = []; |
131
|
|
|
|
132
|
|
|
/** |
133
|
|
|
* Устанавливает информацию о сериалайзерах |
134
|
|
|
* |
135
|
|
|
* @param array $serializer |
136
|
|
|
* |
137
|
|
|
* @return $this |
138
|
|
|
*/ |
139
|
|
|
public function setSerializers(array $serializer) |
140
|
|
|
{ |
141
|
|
|
$this->serializers = $serializer; |
142
|
|
|
$this->serializersOptions = []; |
143
|
|
|
|
144
|
|
|
return $this; |
145
|
|
|
} |
146
|
|
|
|
147
|
|
|
/** |
148
|
|
|
* Определяет есть ли сериалайзер с заданным именем |
149
|
|
|
* |
150
|
|
|
* @param string $serializerName |
151
|
|
|
* |
152
|
|
|
* @return $this |
153
|
|
|
*/ |
154
|
|
|
public function hasSerializer($serializerName) |
155
|
|
|
{ |
156
|
|
|
return array_key_exists($serializerName, $this->serializers); |
157
|
|
|
} |
158
|
|
|
|
159
|
|
|
/** |
160
|
|
|
* Возвращает конфиг сериалайзера с заданным именем |
161
|
|
|
* |
162
|
|
|
* @param $serializerName |
163
|
|
|
* |
164
|
|
|
* @return SerializerOptions |
165
|
|
|
* @throws \Nnx\JmsSerializerModule\Options\Exception\InvalidArgumentException |
166
|
|
|
*/ |
167
|
|
|
public function getSerializer($serializerName) |
168
|
|
|
{ |
169
|
|
|
if (array_key_exists($serializerName, $this->serializersOptions)) { |
170
|
|
|
return $this->serializersOptions[$serializerName]; |
171
|
|
|
} |
172
|
|
|
|
173
|
|
|
if (!$this->hasSerializer($serializerName)) { |
174
|
|
|
$errMsg = sprintf('Config for serializer %s not found', $serializerName); |
175
|
|
|
throw new Exception\InvalidArgumentException($errMsg); |
176
|
|
|
} |
177
|
|
|
|
178
|
|
|
$this->serializersOptions[$serializerName] = new SerializerOptions($this->serializers[$serializerName]); |
179
|
|
|
|
180
|
|
|
return $this->serializersOptions[$serializerName]; |
181
|
|
|
} |
182
|
|
|
|
183
|
|
|
/** |
184
|
|
|
* Устанавливает данные для фабрик метеданных сериалайзеров |
185
|
|
|
* |
186
|
|
|
* @param array $metadataFactories |
187
|
|
|
* |
188
|
|
|
* @return $this |
189
|
|
|
*/ |
190
|
|
|
public function setMetadataFactories(array $metadataFactories) |
191
|
|
|
{ |
192
|
|
|
$this->metadataFactories = $metadataFactories; |
193
|
|
|
$this->metadataFactoriesOptions = []; |
194
|
|
|
|
195
|
|
|
return $this; |
196
|
|
|
} |
197
|
|
|
|
198
|
|
|
|
199
|
|
|
/** |
200
|
|
|
* Определяет есть ли фабрика метаданных с заданныим именем |
201
|
|
|
* |
202
|
|
|
* @param string $metadataFactoryName |
203
|
|
|
* |
204
|
|
|
* @return $this |
205
|
|
|
*/ |
206
|
|
|
public function hasMetadataFactory($metadataFactoryName) |
207
|
|
|
{ |
208
|
|
|
return array_key_exists($metadataFactoryName, $this->metadataFactories); |
209
|
|
|
} |
210
|
|
|
|
211
|
|
|
/** |
212
|
|
|
* Возвращает конфиг фабрики метаданных с заданным именем |
213
|
|
|
* |
214
|
|
|
* @param $metadataFactoryName |
215
|
|
|
* |
216
|
|
|
* @return PluginOptions |
217
|
|
|
* @throws \Nnx\JmsSerializerModule\Options\Exception\InvalidArgumentException |
218
|
|
|
*/ |
219
|
|
View Code Duplication |
public function gasMetadataFactory($metadataFactoryName) |
|
|
|
|
220
|
|
|
{ |
221
|
|
|
if (array_key_exists($metadataFactoryName, $this->metadataFactoriesOptions)) { |
222
|
|
|
return $this->metadataFactoriesOptions[$metadataFactoryName]; |
223
|
|
|
} |
224
|
|
|
|
225
|
|
|
if (!$this->hasMetadataFactory($metadataFactoryName)) { |
226
|
|
|
$errMsg = sprintf('Config for metadata factory %s not found', $metadataFactoryName); |
227
|
|
|
throw new Exception\InvalidArgumentException($errMsg); |
228
|
|
|
} |
229
|
|
|
|
230
|
|
|
$this->metadataFactoriesOptions[$metadataFactoryName] = new PluginOptions($this->metadataFactories[$metadataFactoryName]); |
231
|
|
|
|
232
|
|
|
return $this->metadataFactoriesOptions[$metadataFactoryName]; |
233
|
|
|
} |
234
|
|
|
|
235
|
|
|
/** |
236
|
|
|
* Устанавливает данные для хранилища хенделеров сериалайзера |
237
|
|
|
* |
238
|
|
|
* @param array $handlerRegistries |
239
|
|
|
* |
240
|
|
|
* @return $this |
241
|
|
|
*/ |
242
|
|
|
public function setHandlerRegistries(array $handlerRegistries) |
243
|
|
|
{ |
244
|
|
|
$this->handlerRegistries = $handlerRegistries; |
245
|
|
|
$this->handlerRegistriesOptions = []; |
246
|
|
|
|
247
|
|
|
return $this; |
248
|
|
|
} |
249
|
|
|
|
250
|
|
|
/** |
251
|
|
|
* Определяет есть ли хранилище хенделеров сериалайзера с заданныим именем |
252
|
|
|
* |
253
|
|
|
* @param string $handlerRegistryName |
254
|
|
|
* |
255
|
|
|
* @return $this |
256
|
|
|
*/ |
257
|
|
|
public function hasHandlerRegistry($handlerRegistryName) |
258
|
|
|
{ |
259
|
|
|
return array_key_exists($handlerRegistryName, $this->handlerRegistries); |
260
|
|
|
} |
261
|
|
|
|
262
|
|
|
/** |
263
|
|
|
* Возвращает конфиг хранилища хенделеров сериалайзера с заданныим именем |
264
|
|
|
* |
265
|
|
|
* @param $handlerRegistryName |
266
|
|
|
* |
267
|
|
|
* @return PluginOptions |
268
|
|
|
* @throws \Nnx\JmsSerializerModule\Options\Exception\InvalidArgumentException |
269
|
|
|
*/ |
270
|
|
View Code Duplication |
public function getHandlerRegistry($handlerRegistryName) |
|
|
|
|
271
|
|
|
{ |
272
|
|
|
if (array_key_exists($handlerRegistryName, $this->handlerRegistriesOptions)) { |
273
|
|
|
return $this->handlerRegistriesOptions[$handlerRegistryName]; |
274
|
|
|
} |
275
|
|
|
|
276
|
|
|
if (!$this->hasHandlerRegistry($handlerRegistryName)) { |
277
|
|
|
$errMsg = sprintf('Handler registry %s not found', $handlerRegistryName); |
278
|
|
|
throw new Exception\InvalidArgumentException($errMsg); |
279
|
|
|
} |
280
|
|
|
|
281
|
|
|
$this->handlerRegistriesOptions[$handlerRegistryName] = new PluginOptions($this->handlerRegistriesOptions[$handlerRegistryName]); |
|
|
|
|
282
|
|
|
|
283
|
|
|
return $this->handlerRegistriesOptions[$handlerRegistryName]; |
284
|
|
|
} |
285
|
|
|
|
286
|
|
|
/** |
287
|
|
|
* Устанавливает данные описывающие драйверы метаданных |
288
|
|
|
* |
289
|
|
|
* @param array $metadataDrivers |
290
|
|
|
* |
291
|
|
|
* @return $this |
292
|
|
|
*/ |
293
|
|
|
public function setMetadataDrivers(array $metadataDrivers) |
294
|
|
|
{ |
295
|
|
|
$this->metadataDrivers = $metadataDrivers; |
296
|
|
|
$this->metadataDriversOptions = []; |
297
|
|
|
|
298
|
|
|
return $this; |
299
|
|
|
} |
300
|
|
|
|
301
|
|
|
|
302
|
|
|
/** |
303
|
|
|
* Проверяет есть ли драйвер метаданных с заданным именем |
304
|
|
|
* |
305
|
|
|
* @param string $metadataDriverName |
306
|
|
|
* |
307
|
|
|
* @return $this |
308
|
|
|
*/ |
309
|
|
|
public function hasMetadataDriver($metadataDriverName) |
310
|
|
|
{ |
311
|
|
|
return array_key_exists($metadataDriverName, $this->metadataDrivers); |
312
|
|
|
} |
313
|
|
|
|
314
|
|
|
/** |
315
|
|
|
* Возвращает конфиг драйвера метаданных по заданному имени |
316
|
|
|
* |
317
|
|
|
* @param $metadataDriverName |
318
|
|
|
* |
319
|
|
|
* @return PluginOptions |
320
|
|
|
* @throws \Nnx\JmsSerializerModule\Options\Exception\InvalidArgumentException |
321
|
|
|
*/ |
322
|
|
View Code Duplication |
public function getMetadataDriver($metadataDriverName) |
|
|
|
|
323
|
|
|
{ |
324
|
|
|
if (array_key_exists($metadataDriverName, $this->metadataDriversOptions)) { |
325
|
|
|
return $this->metadataDriversOptions[$metadataDriverName]; |
326
|
|
|
} |
327
|
|
|
|
328
|
|
|
if (!$this->hasMetadataDriver($metadataDriverName)) { |
329
|
|
|
$errMsg = sprintf('Metadata driver %s not found', $metadataDriverName); |
330
|
|
|
throw new Exception\InvalidArgumentException($errMsg); |
331
|
|
|
} |
332
|
|
|
|
333
|
|
|
$this->metadataDriversOptions[$metadataDriverName] = new PluginOptions($this->metadataDrivers[$metadataDriverName]); |
334
|
|
|
|
335
|
|
|
return $this->metadataDriversOptions[$metadataDriverName]; |
336
|
|
|
} |
337
|
|
|
|
338
|
|
|
/** |
339
|
|
|
* Устанавливает данные описывающие конструкторы объектов |
340
|
|
|
* |
341
|
|
|
* @param array $objectConstructors |
342
|
|
|
* |
343
|
|
|
* @return $this |
344
|
|
|
*/ |
345
|
|
|
public function setObjectConstructors(array $objectConstructors) |
346
|
|
|
{ |
347
|
|
|
$this->objectConstructors = $objectConstructors; |
348
|
|
|
$this->objectConstructorsOptions = []; |
349
|
|
|
|
350
|
|
|
return $this; |
351
|
|
|
} |
352
|
|
|
|
353
|
|
|
|
354
|
|
|
/** |
355
|
|
|
* Проверяет есть конструктор объектов с заданным именем |
356
|
|
|
* |
357
|
|
|
* @param string $objectConstructorName |
358
|
|
|
* |
359
|
|
|
* @return $this |
360
|
|
|
*/ |
361
|
|
|
public function hasObjectConstructor($objectConstructorName) |
362
|
|
|
{ |
363
|
|
|
return array_key_exists($objectConstructorName, $this->objectConstructors); |
364
|
|
|
} |
365
|
|
|
|
366
|
|
|
/** |
367
|
|
|
* Возвращает конструктор объектов по заданному имени |
368
|
|
|
* |
369
|
|
|
* @param $objectConstructorName |
370
|
|
|
* |
371
|
|
|
* @return PluginOptions |
372
|
|
|
* @throws \Nnx\JmsSerializerModule\Options\Exception\InvalidArgumentException |
373
|
|
|
*/ |
374
|
|
View Code Duplication |
public function getObjectConstructor($objectConstructorName) |
|
|
|
|
375
|
|
|
{ |
376
|
|
|
if (array_key_exists($objectConstructorName, $this->objectConstructorsOptions)) { |
377
|
|
|
return $this->objectConstructorsOptions[$objectConstructorName]; |
378
|
|
|
} |
379
|
|
|
|
380
|
|
|
if (!$this->hasObjectConstructor($objectConstructorName)) { |
381
|
|
|
$errMsg = sprintf('Object constructor %s not found', $objectConstructorName); |
382
|
|
|
throw new Exception\InvalidArgumentException($errMsg); |
383
|
|
|
} |
384
|
|
|
|
385
|
|
|
$this->objectConstructorsOptions[$objectConstructorName] = new PluginOptions($this->objectConstructors[$objectConstructorName]); |
386
|
|
|
|
387
|
|
|
return $this->objectConstructorsOptions[$objectConstructorName]; |
388
|
|
|
} |
389
|
|
|
|
390
|
|
|
/** |
391
|
|
|
* Устанавливает набор плагинов используемх для сериализации |
392
|
|
|
* |
393
|
|
|
* @param array $serializationVisitors |
394
|
|
|
* |
395
|
|
|
* @return $this |
396
|
|
|
*/ |
397
|
|
|
public function setSerializationVisitors(array $serializationVisitors) |
398
|
|
|
{ |
399
|
|
|
$this->serializationVisitors = $serializationVisitors; |
400
|
|
|
|
401
|
|
|
return $this; |
402
|
|
|
} |
403
|
|
|
|
404
|
|
|
|
405
|
|
|
/** |
406
|
|
|
* Проверяет по указанному имени, наличие набора плагинов используемых для сериализации данных |
407
|
|
|
* |
408
|
|
|
* @param string $serializationVisitorName |
409
|
|
|
* |
410
|
|
|
* @return $this |
411
|
|
|
*/ |
412
|
|
|
public function hasSerializationVisitor($serializationVisitorName) |
413
|
|
|
{ |
414
|
|
|
return array_key_exists($serializationVisitorName, $this->serializationVisitors); |
415
|
|
|
} |
416
|
|
|
|
417
|
|
|
|
418
|
|
|
/** |
419
|
|
|
* Возвращает по указанному имени, набор плагинов используемых для сериализации данных |
420
|
|
|
* |
421
|
|
|
* @param $serializationVisitorName |
422
|
|
|
* |
423
|
|
|
* @return PluginOptions |
424
|
|
|
* @throws \Nnx\JmsSerializerModule\Options\Exception\InvalidArgumentException |
425
|
|
|
*/ |
426
|
|
|
public function getSerializationVisitor($serializationVisitorName) |
427
|
|
|
{ |
428
|
|
|
if (!$this->hasSerializationVisitor($serializationVisitorName)) { |
429
|
|
|
$errMsg = sprintf('Invalid serialization visitor name %s not found', $serializationVisitorName); |
430
|
|
|
throw new Exception\InvalidArgumentException($errMsg); |
431
|
|
|
} |
432
|
|
|
return $this->serializationVisitors[$serializationVisitorName]; |
433
|
|
|
} |
434
|
|
|
|
435
|
|
|
/** |
436
|
|
|
* Возвращает набор плагинов используемых для десериализации |
437
|
|
|
* |
438
|
|
|
* @param array $deserializationVisitors |
439
|
|
|
* |
440
|
|
|
* @return $this |
441
|
|
|
*/ |
442
|
|
|
public function setDeserializationVisitors(array $deserializationVisitors) |
443
|
|
|
{ |
444
|
|
|
$this->deserializationVisitors = $deserializationVisitors; |
445
|
|
|
|
446
|
|
|
return $this; |
447
|
|
|
} |
448
|
|
|
|
449
|
|
|
|
450
|
|
|
/** |
451
|
|
|
* Проверяет по указанному имени, наличие набора плагинов используемых для десериализации данных |
452
|
|
|
* |
453
|
|
|
* @param string $deserializationVisitorName |
454
|
|
|
* |
455
|
|
|
* @return $this |
456
|
|
|
*/ |
457
|
|
|
public function hasDeserializationVisitor($deserializationVisitorName) |
458
|
|
|
{ |
459
|
|
|
return array_key_exists($deserializationVisitorName, $this->deserializationVisitors); |
460
|
|
|
} |
461
|
|
|
|
462
|
|
|
|
463
|
|
|
/** |
464
|
|
|
* Возвращает по указанному имени, набор плагинов используемых для десериализации данных |
465
|
|
|
* |
466
|
|
|
* @param $deserializationVisitorName |
467
|
|
|
* |
468
|
|
|
* @return PluginOptions |
469
|
|
|
* @throws \Nnx\JmsSerializerModule\Options\Exception\InvalidArgumentException |
470
|
|
|
*/ |
471
|
|
|
public function getDeserializationVisitor($deserializationVisitorName) |
472
|
|
|
{ |
473
|
|
|
if (!$this->hasDeserializationVisitor($deserializationVisitorName)) { |
474
|
|
|
$errMsg = sprintf('Invalid deserialization visitor name %s not found', $deserializationVisitorName); |
475
|
|
|
throw new Exception\InvalidArgumentException($errMsg); |
476
|
|
|
} |
477
|
|
|
return $this->deserializationVisitors[$deserializationVisitorName]; |
478
|
|
|
} |
479
|
|
|
|
480
|
|
|
/** |
481
|
|
|
* Устанавливает набор данных описывающих диспетчеры событий |
482
|
|
|
* |
483
|
|
|
* @param array $eventDispatchers |
484
|
|
|
* |
485
|
|
|
* @return $this |
486
|
|
|
*/ |
487
|
|
|
public function setEventDispatchers(array $eventDispatchers) |
488
|
|
|
{ |
489
|
|
|
$this->eventDispatchers = $eventDispatchers; |
490
|
|
|
$this->eventDispatchersOptions = []; |
491
|
|
|
|
492
|
|
|
return $this; |
493
|
|
|
} |
494
|
|
|
|
495
|
|
|
/** |
496
|
|
|
* Проверяет есть ли диспетчер событий с заданным именем |
497
|
|
|
* |
498
|
|
|
* @param string $eventDispatcherName |
499
|
|
|
* |
500
|
|
|
* @return $this |
501
|
|
|
*/ |
502
|
|
|
public function hasEventDispatcher($eventDispatcherName) |
503
|
|
|
{ |
504
|
|
|
return array_key_exists($eventDispatcherName, $this->eventDispatchers); |
505
|
|
|
} |
506
|
|
|
|
507
|
|
|
/** |
508
|
|
|
* Возвращает диспетчер событий по заданному имени |
509
|
|
|
* |
510
|
|
|
* @param $eventDispatcherName |
511
|
|
|
* |
512
|
|
|
* @return PluginOptions |
513
|
|
|
* @throws \Nnx\JmsSerializerModule\Options\Exception\InvalidArgumentException |
514
|
|
|
*/ |
515
|
|
View Code Duplication |
public function getEventDispatcher($eventDispatcherName) |
|
|
|
|
516
|
|
|
{ |
517
|
|
|
if (array_key_exists($eventDispatcherName, $this->eventDispatchersOptions)) { |
518
|
|
|
return $this->eventDispatchersOptions[$eventDispatcherName]; |
519
|
|
|
} |
520
|
|
|
|
521
|
|
|
if (!$this->hasEventDispatcher($eventDispatcherName)) { |
522
|
|
|
$errMsg = sprintf('Event dispatcher %s not found', $eventDispatcherName); |
523
|
|
|
throw new Exception\InvalidArgumentException($errMsg); |
524
|
|
|
} |
525
|
|
|
|
526
|
|
|
$this->eventDispatchersOptions[$eventDispatcherName] = new PluginOptions($this->eventDispatchers[$eventDispatcherName]); |
527
|
|
|
|
528
|
|
|
return $this->eventDispatchersOptions[$eventDispatcherName]; |
529
|
|
|
} |
530
|
|
|
|
531
|
|
|
/** |
532
|
|
|
* Устанавливает набор данных описывающих парсеры типов |
533
|
|
|
* |
534
|
|
|
* @param array $typeParsers |
535
|
|
|
* |
536
|
|
|
* @return $this |
537
|
|
|
*/ |
538
|
|
|
public function setTypeParsers(array $typeParsers) |
539
|
|
|
{ |
540
|
|
|
$this->typeParsers = $typeParsers; |
541
|
|
|
$this->typeParsersOptions = []; |
542
|
|
|
|
543
|
|
|
return $this; |
544
|
|
|
} |
545
|
|
|
|
546
|
|
|
|
547
|
|
|
/** |
548
|
|
|
* Проверяет есть ли парсер типов с заданным именем |
549
|
|
|
* |
550
|
|
|
* @param string $typeParserName |
551
|
|
|
* |
552
|
|
|
* @return $this |
553
|
|
|
*/ |
554
|
|
|
public function hasTypeParser($typeParserName) |
555
|
|
|
{ |
556
|
|
|
return array_key_exists($typeParserName, $this->typeParsers); |
557
|
|
|
} |
558
|
|
|
|
559
|
|
|
/** |
560
|
|
|
* Возвращает парсер типов с заданным именем |
561
|
|
|
* |
562
|
|
|
* @param $typeParserName |
563
|
|
|
* |
564
|
|
|
* @return PluginOptions |
565
|
|
|
* @throws \Nnx\JmsSerializerModule\Options\Exception\InvalidArgumentException |
566
|
|
|
*/ |
567
|
|
View Code Duplication |
public function getTypeParser($typeParserName) |
|
|
|
|
568
|
|
|
{ |
569
|
|
|
if (array_key_exists($typeParserName, $this->typeParsersOptions)) { |
570
|
|
|
return $this->typeParsersOptions[$typeParserName]; |
571
|
|
|
} |
572
|
|
|
|
573
|
|
|
if (!$this->hasTypeParser($typeParserName)) { |
574
|
|
|
$errMsg = sprintf('Type parser %s not found', $typeParserName); |
575
|
|
|
throw new Exception\InvalidArgumentException($errMsg); |
576
|
|
|
} |
577
|
|
|
|
578
|
|
|
$this->typeParsersOptions[$typeParserName] = new PluginOptions($this->typeParsers[$typeParserName]); |
579
|
|
|
|
580
|
|
|
return $this->typeParsersOptions[$typeParserName]; |
581
|
|
|
} |
582
|
|
|
} |
583
|
|
|
|
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.