3737use Symfony \Component \Filesystem \Filesystem ;
3838use Symfony \Component \HttpKernel \Config \FileLocator ;
3939use Symfony \Component \HttpKernel \KernelEvents ;
40- use Symfony \Component \HttpKernel \KernelInterface ;
4140use Throwable ;
4241
4342/**
@@ -102,6 +101,21 @@ class ServiceProvider
102101 */
103102 protected $ configDir = '/local/configs ' ;
104103
104+ /**
105+ * @var string $kernelServiceClass Класс, реализующий сервис kernel.
106+ */
107+ protected $ kernelServiceClass = AppKernel::class;
108+
109+ /**
110+ * @var array $standartCompilerPasses Пассы Symfony.
111+ */
112+ protected $ standartCompilerPasses = [];
113+
114+ /**
115+ * @var string $symfonyCompilerClass Класс с симфоническими compiler passes.
116+ */
117+ protected $ symfonyCompilerClass = SymfonyCompilerPassBag::class;
118+
105119 /**
106120 * @var ErrorScreen $errorHandler Обработчик ошибок.
107121 */
@@ -152,16 +166,6 @@ class ServiceProvider
152166 */
153167 private $ debug ;
154168
155- /**
156- * @var array $standartCompilerPasses Пассы Symfony.
157- */
158- protected $ standartCompilerPasses = [];
159-
160- /**
161- * @var string $symfonyCompilerClass Класс с симфоническими compiler passes.
162- */
163- protected $ symfonyCompilerClass = SymfonyCompilerPassBag::class;
164-
165169 /**
166170 * ServiceProvider constructor.
167171 *
@@ -639,11 +643,7 @@ private function initialize(string $fileName): ?ContainerBuilder
639643 private function setDefaultParamsContainer () : void
640644 {
641645 if (!static ::$ containerBuilder ->hasDefinition ('kernel ' )) {
642- static ::$ containerBuilder ->register ('kernel ' , AppKernel::class)
643- ->addTag ('service.bootstrap ' )
644- ->setAutoconfigured (true )
645- ->setPublic (true )
646- ->setArguments ([$ this ->environment , $ this ->debug ]);
646+ $ this ->registerKernel ($ this ->kernelServiceClass );
647647 }
648648
649649 /** @var array $kernelParams */
@@ -652,6 +652,24 @@ private function setDefaultParamsContainer() : void
652652 static ::$ containerBuilder ->getParameterBag ()->add ($ kernelParams );
653653 }
654654
655+ /**
656+ * Регистрация kernel сервиса.
657+ *
658+ * @param string $kernelClass Класс Kernel.
659+ *
660+ * @return void
661+ *
662+ * @since 11.07.2021
663+ */
664+ private function registerKernel (string $ kernelClass ) : void
665+ {
666+ static ::$ containerBuilder ->register ('kernel ' , $ kernelClass )
667+ ->addTag ('service.bootstrap ' )
668+ ->setAutoconfigured (true )
669+ ->setPublic (true )
670+ ->setArguments ([$ this ->environment , $ this ->debug ]);
671+ }
672+
655673 /**
656674 * Если надо создать директорию для компилированного контейнера.
657675 *
@@ -800,7 +818,7 @@ private function loadContainerConfig(string $fileName, ContainerBuilder $contain
800818 $ loader = $ this ->getContainerLoader ($ containerBuilder );
801819
802820 try {
803- $ loader ->load ($ _SERVER [ ' DOCUMENT_ROOT ' ] . '/ ' . $ fileName );
821+ $ loader ->load ($ this -> projectRoot . '/ ' . $ fileName );
804822 $ loader ->load (__DIR__ . '/../config/base.yaml ' );
805823 return true ;
806824 } catch (Exception $ e ) {
@@ -824,7 +842,7 @@ private function loadContainerConfig(string $fileName, ContainerBuilder $contain
824842 */
825843 private function configureContainer (ContainerBuilder $ container , LoaderInterface $ loader ): void
826844 {
827- $ confDir = $ _SERVER [ ' DOCUMENT_ROOT ' ] . $ this ->configDir ;
845+ $ confDir = $ this -> projectRoot . $ this ->configDir ;
828846
829847 if (!@file_exists ($ confDir )) {
830848 throw new RuntimeException (
@@ -834,8 +852,10 @@ private function configureContainer(ContainerBuilder $container, LoaderInterface
834852
835853 $ container ->setParameter ('container.dumper.inline_class_loader ' , true );
836854
837- $ loader ->load ($ confDir .'/packages/* ' .self ::CONFIG_EXTS , 'glob ' );
838-
855+ if (is_dir ($ confDir .'/packages ' )) {
856+ $ loader ->load ($ confDir .'/packages/* ' .self ::CONFIG_EXTS , 'glob ' );
857+ }
858+
839859 if (is_dir ($ confDir . '/packages/ ' . $ this ->environment )) {
840860 $ loader ->load ($ confDir . '/packages/ ' . $ this ->environment . '/**/* ' . self ::CONFIG_EXTS , 'glob ' );
841861 }
0 commit comments