@@ -572,18 +572,25 @@ protected function getContainerBaseClass()
572
572
*/
573
573
protected function initializeContainer ()
574
574
{
575
+ $ asFiles = true ;
575
576
$ class = $ this ->getContainerClass ();
576
577
$ cacheDir = $ this ->warmupDir ?: $ this ->getCacheDir ();
577
578
$ cache = new ConfigCache ($ cacheDir .'/ ' .$ class .'.php ' , $ this ->debug );
578
579
$ oldContainer = null ;
579
580
if ($ fresh = $ cache ->isFresh ()) {
581
+ if (!$ asFiles ) {
582
+ require_once $ cache ->getPath ();
583
+ $ this ->container = new $ class ();
584
+ $ this ->container ->set ('kernel ' , $ this );
585
+
586
+ return ;
587
+ }
580
588
// Silence E_WARNING to ignore "include" failures - don't use "@" to prevent silencing fatal errors
581
589
$ errorLevel = error_reporting (\E_ALL ^ \E_WARNING );
582
590
$ fresh = $ oldContainer = false ;
583
591
try {
584
592
if (file_exists ($ cache ->getPath ()) && \is_object ($ this ->container = include $ cache ->getPath ())) {
585
593
$ this ->container ->set ('kernel ' , $ this );
586
- $ oldContainer = $ this ->container ;
587
594
$ fresh = true ;
588
595
}
589
596
} catch (\Throwable $ e ) {
@@ -634,6 +641,10 @@ protected function initializeContainer()
634
641
try {
635
642
$ container = null ;
636
643
$ container = $ this ->buildContainer ();
644
+ $ container ->getParameterBag ()->add ([
645
+ 'container.build_id ' => 'static ' ,
646
+ 'container.as_files ' => $ asFiles ,
647
+ ]);
637
648
$ container ->compile ();
638
649
} finally {
639
650
if ($ this ->debug && true !== $ previousHandler ) {
@@ -657,7 +668,12 @@ protected function initializeContainer()
657
668
$ oldContainer = \is_object ($ oldContainer ) ? new \ReflectionClass ($ oldContainer ) : false ;
658
669
659
670
$ this ->dumpContainer ($ cache , $ container , $ class , $ this ->getContainerBaseClass ());
660
- $ this ->container = require $ cache ->getPath ();
671
+ if ($ asFiles ) {
672
+ $ this ->container = require $ cache ->getPath ();
673
+ } else {
674
+ require $ cache ->getPath ();
675
+ $ this ->container = new $ class ();
676
+ }
661
677
$ this ->container ->set ('kernel ' , $ this );
662
678
663
679
if ($ oldContainer && \get_class ($ this ->container ) !== $ oldContainer ->name ) {
@@ -848,23 +864,27 @@ protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container
848
864
'class ' => $ class ,
849
865
'base_class ' => $ baseClass ,
850
866
'file ' => $ cache ->getPath (),
851
- 'as_files ' => true ,
867
+ 'as_files ' => $ container -> hasParameter ( ' container.as_files ' ) ? $ container -> getParameter ( ' container.as_files ' ) : true ,
852
868
'debug ' => $ this ->debug ,
853
869
'inline_class_loader_parameter ' => \PHP_VERSION_ID >= 70000 && !$ this ->loadClassCache && !class_exists (ClassCollectionLoader::class, false ) ? 'container.dumper.inline_class_loader ' : null ,
854
870
'build_time ' => $ container ->hasParameter ('kernel.container_build_time ' ) ? $ container ->getParameter ('kernel.container_build_time ' ) : time (),
855
871
]);
856
872
857
- $ rootCode = array_pop ($ content );
858
- $ dir = \dirname ($ cache ->getPath ()).'/ ' ;
859
- $ fs = new Filesystem ();
873
+ if (\is_array ($ content )) {
874
+ $ rootCode = array_pop ($ content );
875
+ $ dir = \dirname ($ cache ->getPath ()).'/ ' ;
876
+ $ fs = new Filesystem ();
860
877
861
- foreach ($ content as $ file => $ code ) {
862
- $ fs ->dumpFile ($ dir .$ file , $ code );
863
- @chmod ($ dir .$ file , 0666 & ~umask ());
864
- }
865
- $ legacyFile = \dirname ($ dir .$ file ).'.legacy ' ;
866
- if (file_exists ($ legacyFile )) {
867
- @unlink ($ legacyFile );
878
+ foreach ($ content as $ file => $ code ) {
879
+ $ fs ->dumpFile ($ dir .$ file , $ code );
880
+ @chmod ($ dir .$ file , 0666 & ~umask ());
881
+ }
882
+ $ legacyFile = \dirname ($ dir .$ file ).'.legacy ' ;
883
+ if (file_exists ($ legacyFile )) {
884
+ @unlink ($ legacyFile );
885
+ }
886
+ } else {
887
+ $ rootCode = $ content ;
868
888
}
869
889
870
890
$ cache ->write ($ rootCode , $ container ->getResources ());
0 commit comments