Skip to content

Commit 1b6ea50

Browse files
committed
Fix function behavior
1 parent 6b88c44 commit 1b6ea50

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

src/functions.php

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@
4848
function container(
4949
ConfigInterface|PsrContainerInterface|ServiceProviderInterface|string ...$initializers,
5050
): ContainerInterface {
51+
$aggregateContainer = new AggregateContainer();
52+
5153
$getContainer = static fn ($initializer) => match (true) {
5254
$initializer instanceof PsrContainerInterface => $initializer,
53-
$initializer instanceof ServiceProviderInterface => new ServiceProviderContainer($initializer),
55+
$initializer instanceof ServiceProviderInterface => new ServiceProviderContainer($initializer, $aggregateContainer),
5456
$initializer instanceof ConfigInterface => new ConfigContainer($initializer),
5557
default => null,
5658
};
@@ -63,28 +65,20 @@ class_exists($initializer) => $getContainer(new ($initializer)()),
6365

6466
$configKey = \sprintf('%s.%s', ConfigContainer::ALIAS, ContainerInterface::class);
6567

66-
$containers = array_reduce(
67-
$initializers,
68-
static function (array $containers, mixed $initializer) use ($resolve, $configKey) {
69-
$container = $resolve($initializer);
70-
$containers[] = $container;
68+
foreach ($initializers as $initializer) {
69+
$container = $resolve($initializer);
70+
$aggregateContainer->append($container);
7171

72-
if ($container instanceof ConfigContainer) {
73-
try {
74-
foreach ($container->get($configKey) as $nested) {
75-
$containers[] = $resolve($nested);
76-
}
77-
} catch (\Throwable) {
78-
// Ignored
72+
if ($container instanceof ConfigContainer) {
73+
try {
74+
foreach ($container->get($configKey) as $nested) {
75+
$aggregateContainer->append($resolve($nested));
7976
}
77+
} catch (\Throwable) {
78+
// Ignored
8079
}
81-
82-
return $containers;
83-
},
84-
[]
85-
);
86-
87-
$aggregateContainer = new AggregateContainer(...$containers);
80+
}
81+
}
8882

8983
return new AutowireContainer($aggregateContainer);
9084
}

0 commit comments

Comments
 (0)