rector/src/Kernel/ContainerBuilderFactory.php
Tomas Votruba 9a2931cbe4 Updated Rector to commit bdc2fc99631f67eeb2d96e2cf0906279c2561c9a
bdc2fc9963 [NodeManipulator] Remove parent lookup on PropertyFetchAssignManipulator (#4037)
2023-06-01 08:56:46 +00:00

47 lines
1.7 KiB
PHP

<?php
declare (strict_types=1);
namespace Rector\Core\Kernel;
use Rector\Core\Config\Loader\ConfigureCallMergingLoaderFactory;
use RectorPrefix202306\Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use RectorPrefix202306\Symfony\Component\DependencyInjection\ContainerBuilder;
use RectorPrefix202306\Webmozart\Assert\Assert;
final class ContainerBuilderFactory
{
/**
* @readonly
* @var \Rector\Core\Config\Loader\ConfigureCallMergingLoaderFactory
*/
private $configureCallMergingLoaderFactory;
public function __construct(ConfigureCallMergingLoaderFactory $configureCallMergingLoaderFactory)
{
$this->configureCallMergingLoaderFactory = $configureCallMergingLoaderFactory;
}
/**
* @param string[] $configFiles
* @param CompilerPassInterface[] $compilerPasses
*/
public function create(array $configFiles, array $compilerPasses) : ContainerBuilder
{
Assert::allIsAOf($compilerPasses, CompilerPassInterface::class);
Assert::allString($configFiles);
$containerBuilder = new ContainerBuilder();
$this->registerConfigFiles($containerBuilder, $configFiles);
foreach ($compilerPasses as $compilerPass) {
$containerBuilder->addCompilerPass($compilerPass);
}
return $containerBuilder;
}
/**
* @param string[] $configFiles
*/
private function registerConfigFiles(ContainerBuilder $containerBuilder, array $configFiles) : void
{
$delegatingLoader = $this->configureCallMergingLoaderFactory->create($containerBuilder, \getcwd());
foreach ($configFiles as $configFile) {
$delegatingLoader->load($configFile);
}
}
}