Skip to content

Commit fd99df3

Browse files
committed
Рефакторинг
1 parent 9388333 commit fd99df3

File tree

1 file changed

+39
-35
lines changed

1 file changed

+39
-35
lines changed

lib/DI/services.php

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@
4444
class Services
4545
{
4646
/**
47-
* @var ContainerBuilder $container Контейнер.
47+
* @var ContainerBuilder|null $container Контейнер.
4848
*/
49-
private $container;
49+
private static $container;
5050

5151
/**
5252
* @var array $config
@@ -89,13 +89,6 @@ public function __construct()
8989
$this->parameters['cache_path'] = $this->parameters['cache_path'] ?? '/bitrix/cache/proklung.redis';
9090
$this->parameters['container.dumper.inline_factories'] = $this->parameters['container.dumper.inline_factories'] ?? false;
9191
$this->parameters['compile_container_envs'] = (array)$this->parameters['compile_container_envs'];
92-
93-
$this->container = new ContainerBuilder();
94-
$adapter = new BitrixSettingsDiAdapter();
95-
96-
$adapter->importParameters($this->container, $this->config);
97-
$adapter->importParameters($this->container, $this->parameters);
98-
$adapter->importServices($this->container, $this->services);
9992
}
10093

10194
/**
@@ -132,6 +125,10 @@ public static function getInstance() : Container
132125
*/
133126
public function load() : void
134127
{
128+
if (static::$container !== null) {
129+
return;
130+
}
131+
135132
$compilerContainer = new CompilerContainer();
136133

137134
// Кэшировать контейнер?
@@ -140,8 +137,8 @@ public function load() : void
140137
return;
141138
}
142139

143-
$this->container = $compilerContainer->cacheContainer(
144-
$this->container,
140+
static::$container = $compilerContainer->cacheContainer(
141+
static::$container,
145142
$_SERVER['DOCUMENT_ROOT'] . $this->parameters['cache_path'],
146143
'container.php',
147144
$this->environment,
@@ -158,8 +155,15 @@ public function load() : void
158155
*/
159156
public function initContainer() : void
160157
{
161-
$this->container->setParameter('kernel.debug', $_ENV['DEBUG'] ?? true);
162-
$loader = new YamlFileLoader($this->container, new FileLocator(__DIR__ . '/../../configs'));
158+
static::$container = new ContainerBuilder();
159+
$adapter = new BitrixSettingsDiAdapter();
160+
161+
$adapter->importParameters(static::$container, $this->config);
162+
$adapter->importParameters(static::$container, $this->parameters);
163+
$adapter->importServices(static::$container, $this->services);
164+
165+
static::$container->setParameter('kernel.debug', $_ENV['DEBUG'] ?? true);
166+
$loader = new YamlFileLoader(static::$container, new FileLocator(__DIR__ . '/../../configs'));
163167
$loader->load('services.yml');
164168

165169
// find default configuration
@@ -181,7 +185,7 @@ public function initContainer() : void
181185
$clientNames = [];
182186

183187
$configManager = new \Proklung\Redis\DI\Configuration(
184-
$this->container->getParameter('kernel.debug')
188+
static::$container->getParameter('kernel.debug')
185189
);
186190
$config = $this->processConfiguration($configManager, $this->config);
187191

@@ -190,10 +194,10 @@ public function initContainer() : void
190194
$transportNames[] = $name;
191195

192196
$transportFactory = (new TransportFactory($name, $defaultName === $name));
193-
$transportFactory->buildConnectionFactory($this->container, $modules['transport']);
194-
$transportFactory->buildContext($this->container, []);
195-
$transportFactory->buildQueueConsumer($this->container, $modules['consumption']);
196-
$transportFactory->buildRpcClient($this->container, []);
197+
$transportFactory->buildConnectionFactory(static::$container, $modules['transport']);
198+
$transportFactory->buildContext(static::$container, []);
199+
$transportFactory->buildQueueConsumer(static::$container, $modules['consumption']);
200+
$transportFactory->buildRpcClient(static::$container, []);
197201

198202
// client
199203
if (isset($modules['client'])) {
@@ -204,9 +208,9 @@ public function initContainer() : void
204208
$clientConfig['consumption'] = $modules['consumption'];
205209

206210
$clientFactory = new ClientFactory($name, $defaultName === $name);
207-
$clientFactory->build($this->container, $clientConfig);
208-
$clientFactory->createDriver($this->container, $modules['transport']);
209-
$clientFactory->createFlushSpoolProducerListener($this->container);
211+
$clientFactory->build(static::$container, $clientConfig);
212+
$clientFactory->createDriver(static::$container, $modules['transport']);
213+
$clientFactory->createFlushSpoolProducerListener(static::$container);
210214
}
211215

212216
// async events
@@ -218,7 +222,7 @@ public function initContainer() : void
218222
$extension = new AsyncEventDispatcherExtension();
219223
$extension->load([[
220224
'context_service' => Context::class,
221-
]], $this->container);
225+
]], static::$container);
222226
}
223227
}
224228

@@ -227,29 +231,29 @@ public function initContainer() : void
227231
$defaultClient = $defaultName;
228232
}
229233

230-
$this->container->setParameter('enqueue.transports', $transportNames);
231-
$this->container->setParameter('enqueue.clients', $clientNames);
234+
static::$container->setParameter('enqueue.transports', $transportNames);
235+
static::$container->setParameter('enqueue.clients', $clientNames);
232236

233-
$this->container->setParameter('enqueue.default_transport', $defaultName);
237+
static::$container->setParameter('enqueue.default_transport', $defaultName);
234238

235239
if ($defaultClient) {
236-
$this->container->setParameter('enqueue.default_client', $defaultClient);
240+
static::$container->setParameter('enqueue.default_client', $defaultClient);
237241
}
238242

239243
if ($defaultClient) {
240-
$this->setupAutowiringForDefaultClientsProcessors($this->container, $defaultClient);
244+
$this->setupAutowiringForDefaultClientsProcessors(static::$container, $defaultClient);
241245
}
242246

243-
$this->loadMessageQueueCollector($config, $this->container);
244-
$this->loadAsyncCommands($config, $this->container);
247+
$this->loadMessageQueueCollector($config, static::$container);
248+
$this->loadAsyncCommands($config, static::$container);
245249

246-
$this->loadResetServicesExtension($config, $this->container);
247-
$this->loadSignalExtension($config, $this->container);
248-
$this->loadReplyExtension($config, $this->container);
250+
$this->loadResetServicesExtension($config, static::$container);
251+
$this->loadSignalExtension($config, static::$container);
252+
$this->loadReplyExtension($config, static::$container);
249253

250-
$this->build($this->container);
254+
$this->build(static::$container);
251255

252-
$this->container->compile(true);
256+
static::$container->compile(true);
253257
}
254258

255259
/**
@@ -259,7 +263,7 @@ public function initContainer() : void
259263
*/
260264
public function getContainer(): Container
261265
{
262-
return $this->container;
266+
return static::$container;
263267
}
264268

265269
/**

0 commit comments

Comments
 (0)