mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-03 09:50:49 +00:00
9a2931cbe4
bdc2fc9963
[NodeManipulator] Remove parent lookup on PropertyFetchAssignManipulator (#4037)
47 lines
1.7 KiB
PHP
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);
|
|
}
|
|
}
|
|
}
|