4444class 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