123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Bundle\FrameworkBundle\Command;
- use Symfony\Component\Config\ConfigCache;
- use Symfony\Component\Config\FileLocator;
- use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass;
- use Symfony\Component\DependencyInjection\ContainerBuilder;
- use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
- /**
- * @internal
- *
- * @author Robin Chalas <robin.chalas@gmail.com>
- * @author Nicolas Grekas <p@tchwork.com>
- */
- trait BuildDebugContainerTrait
- {
- protected $containerBuilder;
- /**
- * Loads the ContainerBuilder from the cache.
- *
- * @throws \LogicException
- */
- protected function getContainerBuilder(): ContainerBuilder
- {
- if ($this->containerBuilder) {
- return $this->containerBuilder;
- }
- $kernel = $this->getApplication()->getKernel();
- if (!$kernel->isDebug() || !(new ConfigCache($kernel->getContainer()->getParameter('debug.container.dump'), true))->isFresh()) {
- $buildContainer = \Closure::bind(function () { return $this->buildContainer(); }, $kernel, \get_class($kernel));
- $container = $buildContainer();
- $container->getCompilerPassConfig()->setRemovingPasses([]);
- $container->getCompilerPassConfig()->setAfterRemovingPasses([]);
- $container->compile();
- } else {
- (new XmlFileLoader($container = new ContainerBuilder(), new FileLocator()))->load($kernel->getContainer()->getParameter('debug.container.dump'));
- $locatorPass = new ServiceLocatorTagPass();
- $locatorPass->process($container);
- }
- return $this->containerBuilder = $container;
- }
- }
|