4848function 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