|
12 | 12 | class ContainerContainerBuilder
|
13 | 13 | {
|
14 | 14 | /**
|
15 |
| - * @param array<int, string> $additionalConfigFiles |
| 15 | + * @param string[] $additionalConfigFiles |
16 | 16 | */
|
17 | 17 | public function createDependencyInjectionContainer(array $additionalConfigFiles = []): ContainerInterface
|
18 | 18 | {
|
19 | 19 | $containerBuilder = new ContainerBuilder();
|
20 |
| - $this->loadFile($containerBuilder, __DIR__ . '/../../config/application.php'); |
21 |
| - $this->importExtensionConfigurations($containerBuilder); |
22 | 20 |
|
23 | 21 | $containerBuilder->addCompilerPass(new AddConsoleCommandPass());
|
24 | 22 |
|
25 |
| - foreach ($additionalConfigFiles as $additionalConfigFile) { |
26 |
| - if (!file_exists($additionalConfigFile)) { |
| 23 | + $configFiles = [ |
| 24 | + __DIR__ . '/../../config/application.php' |
| 25 | + ]; |
| 26 | + $configFiles = array_merge($configFiles, $additionalConfigFiles); |
| 27 | + $configFiles = array_merge($configFiles, $this->collectConfigFilesFromExtensions()); |
| 28 | + |
| 29 | + foreach ($configFiles as $configFile) { |
| 30 | + if (!file_exists($configFile)) { |
27 | 31 | continue;
|
28 | 32 | }
|
29 |
| - $this->loadFile($containerBuilder, $additionalConfigFile); |
| 33 | + |
| 34 | + $fileLoader = new PhpFileLoader($containerBuilder, new FileLocator(dirname($configFile))); |
| 35 | + $fileLoader->load($configFile); |
30 | 36 | }
|
31 | 37 |
|
32 | 38 | $containerBuilder->compile();
|
33 | 39 |
|
34 | 40 | return $containerBuilder;
|
35 | 41 | }
|
36 | 42 |
|
37 |
| - |
38 |
| - private function loadFile(ContainerBuilder $containerBuilder, string $pathToFile): void |
39 |
| - { |
40 |
| - $fileLoader = new PhpFileLoader($containerBuilder, new FileLocator(dirname($pathToFile))); |
41 |
| - $fileLoader->load($pathToFile); |
42 |
| - } |
43 |
| - |
44 |
| - private function importExtensionConfigurations(ContainerBuilder $containerBuilder): void |
| 43 | + /** |
| 44 | + * @return string[] |
| 45 | + */ |
| 46 | + private function collectConfigFilesFromExtensions(): array |
45 | 47 | {
|
| 48 | + $collectedConfigFiles = []; |
46 | 49 | if (!class_exists('a9f\\FractorExtensionInstaller\\Generated\\InstalledPackages')) {
|
47 |
| - return; |
| 50 | + return $collectedConfigFiles; |
48 | 51 | }
|
49 | 52 |
|
50 | 53 | foreach (InstalledPackages::PACKAGES as $package) {
|
51 |
| - $filePath = $package['path'] . '/config/application.php'; |
52 |
| - |
53 |
| - if (file_exists($filePath)) { |
54 |
| - $this->loadFile($containerBuilder, $filePath); |
55 |
| - } |
| 54 | + $collectedConfigFiles[] = $package['path'] . '/config/application.php'; |
56 | 55 | }
|
| 56 | + |
| 57 | + return $collectedConfigFiles; |
57 | 58 | }
|
58 | 59 | }
|
0 commit comments