21
21
use Symfony \Component \DependencyInjection \Extension \ExtensionInterface ;
22
22
use Symfony \Component \DependencyInjection \ParameterBag \ContainerBag ;
23
23
use Symfony \Component \DependencyInjection \ParameterBag \ParameterBag ;
24
+ use Symfony \Component \HttpKernel \Bundle \BundleInterface ;
24
25
use Symfony \Component \HttpKernel \CacheWarmer \CacheWarmerInterface ;
26
+ use Symfony \Component \HttpKernel \Kernel ;
25
27
use Symfony \Component \HttpKernel \KernelInterface ;
26
28
27
29
/**
@@ -47,14 +49,29 @@ public function __construct(KernelInterface $kernel, ?LoggerInterface $logger =
47
49
*/
48
50
public function warmUp (string $ cacheDir )
49
51
{
50
- $ generator = new ConfigBuilderGenerator ($ this ->kernel ->getBuildDir ());
52
+ if ($ this ->kernel instanceof Kernel) {
53
+ /** @var ContainerBuilder $container */
54
+ $ container = \Closure::bind (function (Kernel $ kernel ) {
55
+ $ containerBuilder = $ kernel ->getContainerBuilder ();
56
+ $ kernel ->prepareContainer ($ containerBuilder );
57
+
58
+ return $ containerBuilder ;
59
+ }, null , $ this ->kernel )($ this ->kernel );
51
60
52
- foreach ($ this ->kernel ->getBundles () as $ bundle ) {
53
- $ extension = $ bundle ->getContainerExtension ();
54
- if (null === $ extension ) {
55
- continue ;
61
+ $ extensions = $ container ->getExtensions ();
62
+ } else {
63
+ $ extensions = [];
64
+ foreach ($ this ->kernel ->getBundles () as $ bundle ) {
65
+ $ extension = $ bundle ->getContainerExtension ();
66
+ if (null !== $ extension ) {
67
+ $ extensions [] = $ extension ;
68
+ }
56
69
}
70
+ }
71
+
72
+ $ generator = new ConfigBuilderGenerator ($ this ->kernel ->getBuildDir ());
57
73
74
+ foreach ($ extensions as $ extension ) {
58
75
try {
59
76
$ this ->dumpExtension ($ extension , $ generator );
60
77
} catch (\Exception $ e ) {
0 commit comments