Completed
Push — master ( e28961...6d17d3 )
by Андрей
20:19 queued 17:56
created

ModuleOptions::getFlagAutoBuildEntityMapDoctrineCache()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
/**
3
 * @link    https://github.com/nnx-framework/doctrine
4
 * @author  Malofeykin Andrey  <[email protected]>
5
 */
6
namespace Nnx\Doctrine\Options;
7
8
use Zend\Stdlib\AbstractOptions;
9
use Nnx\ModuleOptions\ModuleOptionsInterface;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, Nnx\Doctrine\Options\ModuleOptionsInterface.

Let’s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let’s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
10
use Nnx\Doctrine\Options\ModuleOptionsInterface as CurrentModuleOptionsInterface;
11
12
13
/**
14
 * Class ModuleOptions
15
 *
16
 * @package Nnx\Doctrine\Options
17
 */
18
class ModuleOptions extends AbstractOptions implements ModuleOptionsInterface, CurrentModuleOptionsInterface
19
{
20
    /**
21
     * Строка, используемая как разделитель в полном имени класса сущности(или интерфейса), которая разделяет неймспейс
22
     * на две части: 1) Нейсмпейс в котором расположенные все сущности 2) Постфикс указывающий на кокнетную сущность.
23
     * Например \Nnx\Doctrine\PhpUnit\TestData\EntityAutoResolve\TestModule1\Entity\TestEntity\TestEntityInterface
24
     * 1) Разделителем будет \Entity\
25
     * 2) Неймспейс в котром расположены все сущности будет \Nnx\Doctrine\PhpUnit\TestData\EntityAutoResolve\TestModule1\Entity\
26
     * 3) Постфикс указывающий на кокнетную сущность будет TestEntity\TestEntityInterface
27
     *
28
     * @var string
29
     */
30
    protected $entitySeparator;
31
32
    /**
33
     * Паттерн по которому из имени интерфейса можно получить строку, являющеюся заготовкой для формирования имени сущности
34
     *
35
     * @var string
36
     */
37
    protected $entityBodyNamePattern;
38
39
    /**
40
     * Строка которая добавляется перед  заготовкой имени сущности полученной в результате
41
     * примерения @see \Nnx\Doctrine\Options\ModuleOptions::$entityBodyNamePattern к имени интерфейса.
42
     *
43
     * @var string
44
     */
45
    protected $entityNamePrefix;
46
47
    /**
48
     * Строка которая добавляется после заготовки имени сущности полученной в результате примерения
49
     * @see \Nnx\Doctrine\Options\ModuleOptions::$entityBodyNamePattern к имени интерфейса.
50
     *
51
     * @var string
52
     */
53
    protected $entityNamePostfix;
54
55
    /**
56
     * Имя сервиса, позволяющего получить объект кеша из модуля doctrine/cache
57
     *
58
     * (@see https://github.com/doctrine/DoctrineModule)
59
     * (@see vendor/doctrine/doctrine-module/config/module.config.php)
60
     * (@see \DoctrineModule\Service\CacheFactory)
61
     *
62
     * @var string
63
     */
64
    protected $entityMapDoctrineCache;
65
66
    /**
67
     * Префикс используемы для генерации ключа кеширования карты сущностей doctrine
68
     *
69
     * @var string
70
     */
71
    protected $entityMapDoctrineCachePrefix;
72
73
    /**
74
     * Имя сервиса, позволяющего получить объект кеша из модуля doctrine/cache для кеширования метаданных сущности
75
     *
76
     * (@see https://github.com/doctrine/DoctrineModule)
77
     * (@see vendor/doctrine/doctrine-module/config/module.config.php)
78
     * (@see \DoctrineModule\Service\CacheFactory)
79
     *
80
     * @var string
81
     */
82
    protected $metadataReaderCache;
83
84
    /**
85
     * Флаг определяет, нужно ли автоматически собирать кеш карты сущностей
86
     *
87
     * @var boolean
88
     */
89
    protected $flagAutoBuildEntityMapDoctrineCache = true;
90
91
    /**
92
     * Список EntityManager'ов, для которых никогда не нужно собирать кеш entityMap  в автоматическом режими
93
     *
94
     * @var array
95
     */
96
    protected $excludeEntityManagerForAutoBuildEntityMap = [];
97
98
    /**
99
     * Флаг позволяет отключить использования кеширования при работе с entityMap
100
     *
101
     * @var bool
102
     */
103
    protected $flagDisableUseEntityMapDoctrineCache = false;
104
105
    /**
106
     * Строка, используемая как разделитель в полном имени класса сущности (@see \Nnx\Doctrine\Options\ModuleOptions::$entitySeparator)
107
     *
108
     * @return string
109
     */
110
    public function getEntitySeparator()
111
    {
112
        return $this->entitySeparator;
113
    }
114
115
    /**
116
     * Устанавливает строку используемую как разделитель в полном имени класса сущности (@see \Nnx\Doctrine\Options\ModuleOptions::$entitySeparator)
117
     *
118
     * @param string $entitySeparator
119
     *
120
     * @return $this
121
     */
122
    public function setEntitySeparator($entitySeparator)
123
    {
124
        $this->entitySeparator = $entitySeparator;
125
126
        return $this;
127
    }
128
129
    /**
130
     * @inheritdoc
131
     *
132
     * @return string
133
     */
134
    public function getEntityBodyNamePattern()
135
    {
136
        return $this->entityBodyNamePattern;
137
    }
138
139
    /**
140
     * Устанавливает паттерн по которому из имени интерфейса можно получить строку,
141
     * являющеюся заготовкой для формирования имени сущности
142
     *
143
     * @param string $entityBodyNamePattern
144
     *
145
     * @return $this
146
     */
147
    public function setEntityBodyNamePattern($entityBodyNamePattern)
148
    {
149
        $this->entityBodyNamePattern = $entityBodyNamePattern;
150
151
        return $this;
152
    }
153
154
    /**
155
     * @inheritdoc
156
     *
157
     * @return string
158
     */
159
    public function getEntityNamePrefix()
160
    {
161
        return $this->entityNamePrefix;
162
    }
163
164
    /**
165
     * Устанавливает строку которая добавляется перед  заготовкой именем сущности полученной в результате
166
     * примерения @see \Nnx\Doctrine\Options\ModuleOptions::$entityBodyNamePattern к имени интерфейса.
167
     *
168
     * @param string $entityNamePrefix
169
     *
170
     * @return $this
171
     */
172
    public function setEntityNamePrefix($entityNamePrefix)
173
    {
174
        $this->entityNamePrefix = $entityNamePrefix;
175
176
        return $this;
177
    }
178
179
    /**
180
     * @inheritdoc
181
     *
182
     * @return string
183
     */
184
    public function getEntityNamePostfix()
185
    {
186
        return $this->entityNamePostfix;
187
    }
188
189
    /**
190
     * Устанавливает строку которая добавляется после заготовки имени сущности полученной в результате примерения
191
     * @see \Nnx\Doctrine\Options\ModuleOptions::$entityBodyNamePattern к имени интерфейса.
192
     *
193
     * @param string $entityNamePostfix
194
     *
195
     * @return $this
196
     */
197
    public function setEntityNamePostfix($entityNamePostfix)
198
    {
199
        $this->entityNamePostfix = $entityNamePostfix;
200
201
        return $this;
202
    }
203
204
    /**
205
     * Возвращает имя сервиса, позволяющего получить объект кеша из модуля doctrine/cache
206
     *
207
     * @return string
208
     */
209
    public function getEntityMapDoctrineCache()
210
    {
211
        return $this->entityMapDoctrineCache;
212
    }
213
214
    /**
215
     * Устанавливает имя сервиса, позволяющего получить объект кеша из модуля doctrine/cache
216
     *
217
     * @param string $entityMapDoctrineCache
218
     *
219
     * @return $this
220
     */
221
    public function setEntityMapDoctrineCache($entityMapDoctrineCache)
222
    {
223
        $this->entityMapDoctrineCache = $entityMapDoctrineCache;
224
225
        return $this;
226
    }
227
228
    /**
229
     * Возвращает префикс используемы для генерации ключа кеширования карты сущностей doctrine
230
     *
231
     * @return string
232
     */
233
    public function getEntityMapDoctrineCachePrefix()
234
    {
235
        return $this->entityMapDoctrineCachePrefix;
236
    }
237
238
    /**
239
     * Возвращает префикс используемы для генерации ключа кеширования карты сущностей doctrine
240
     *
241
     * @param string $entityMapDoctrineCachePrefix
242
     *
243
     * @return $this
244
     */
245
    public function setEntityMapDoctrineCachePrefix($entityMapDoctrineCachePrefix)
246
    {
247
        $this->entityMapDoctrineCachePrefix = $entityMapDoctrineCachePrefix;
248
249
        return $this;
250
    }
251
252
    /**
253
     * @inheritdoc
254
     *
255
     * @return string
256
     */
257
    public function getMetadataReaderCache()
258
    {
259
        return $this->metadataReaderCache;
260
    }
261
262
    /**
263
     * Устанавливает имя сервиса, позволяющего получить объект кеша из модуля doctrine/cache для кеширования метаданных сущности
264
     *
265
     * @param string $metadataReaderCache
266
     *
267
     * @return $this
268
     */
269
    public function setMetadataReaderCache($metadataReaderCache)
270
    {
271
        $this->metadataReaderCache = $metadataReaderCache;
272
273
        return $this;
274
    }
275
276
    /**
277
     * @inheritdoc
278
     *
279
     * @return boolean
280
     */
281
    public function getFlagAutoBuildEntityMapDoctrineCache()
282
    {
283
        return $this->flagAutoBuildEntityMapDoctrineCache;
284
    }
285
286
    /**
287
     * Устанавливает флаг определяющий, нужно ли автоматически собирать кеш карты сущностей
288
     *
289
     * @param bool $flagAutoBuildEntityMapDoctrineCache
290
     *
291
     * @return $this
292
     */
293
    public function setFlagAutoBuildEntityMapDoctrineCache($flagAutoBuildEntityMapDoctrineCache)
294
    {
295
        $this->flagAutoBuildEntityMapDoctrineCache = $flagAutoBuildEntityMapDoctrineCache;
296
297
        return $this;
298
    }
299
300
    /**
301
     * @inheritdoc
302
     *
303
     * @return array
304
     */
305
    public function getExcludeEntityManagerForAutoBuildEntityMap()
306
    {
307
        return $this->excludeEntityManagerForAutoBuildEntityMap;
308
    }
309
310
    /**
311
     * Устанавливает список EntityManager'ов, для которых никогда не нужно собирать кеш entityMap  в автоматическом режими
312
     *
313
     * @param array $excludeEntityManagerForAutoBuildEntityMap
314
     *
315
     * @return $this
316
     */
317
    public function setExcludeEntityManagerForAutoBuildEntityMap(array $excludeEntityManagerForAutoBuildEntityMap = [])
318
    {
319
        $this->excludeEntityManagerForAutoBuildEntityMap = $excludeEntityManagerForAutoBuildEntityMap;
320
321
        return $this;
322
    }
323
324
    /**
325
     * @inheritdoc
326
     *
327
     * @return boolean
328
     */
329
    public function getFlagDisableUseEntityMapDoctrineCache()
330
    {
331
        return $this->flagDisableUseEntityMapDoctrineCache;
332
    }
333
334
    /**
335
     * @inheritdoc
336
     *
337
     * @param boolean $flagDisableUseEntityMapDoctrineCache
338
     *
339
     * @return $this
340
     */
341
    public function setFlagDisableUseEntityMapDoctrineCache($flagDisableUseEntityMapDoctrineCache)
342
    {
343
        $this->flagDisableUseEntityMapDoctrineCache = $flagDisableUseEntityMapDoctrineCache;
344
345
        return $this;
346
    }
347
}
348