rector/src/DependencyInjection/Loader/ConfigurableCallValuesCollectingPhpFileLoader.php
Tomas Votruba c770707831 Updated Rector to commit 278cd56de5
278cd56de5 Bump min to PHP 7.2 (#1955)
2022-03-24 21:23:19 +00:00

61 lines
2.6 KiB
PHP

<?php
declare (strict_types=1);
namespace Rector\Core\DependencyInjection\Loader;
use Rector\Core\Contract\Rector\ConfigurableRectorInterface;
use Rector\Core\DependencyInjection\Collector\ConfigureCallValuesCollector;
use RectorPrefix20220324\Symfony\Component\Config\FileLocatorInterface;
use RectorPrefix20220324\Symfony\Component\DependencyInjection\ContainerBuilder;
use RectorPrefix20220324\Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
/**
* @property-read ContainerBuilder $container
*/
final class ConfigurableCallValuesCollectingPhpFileLoader extends \RectorPrefix20220324\Symfony\Component\DependencyInjection\Loader\PhpFileLoader
{
/**
* @readonly
* @var \Rector\Core\DependencyInjection\Collector\ConfigureCallValuesCollector
*/
private $configureCallValuesCollector;
public function __construct(\RectorPrefix20220324\Symfony\Component\DependencyInjection\ContainerBuilder $containerBuilder, \RectorPrefix20220324\Symfony\Component\Config\FileLocatorInterface $fileLocator, \Rector\Core\DependencyInjection\Collector\ConfigureCallValuesCollector $configureCallValuesCollector)
{
$this->configureCallValuesCollector = $configureCallValuesCollector;
parent::__construct($containerBuilder, $fileLocator);
}
/**
* @param mixed $resource
* @return mixed
*/
public function load($resource, string $type = null)
{
// this call collects root values
$this->collectConfigureCallsFromJustImportedConfigurableRectorDefinitions();
parent::load($resource, $type);
$this->collectConfigureCallsFromJustImportedConfigurableRectorDefinitions();
return null;
}
/**
* @param bool|string $ignoreErrors
* @param mixed $resource
* @return mixed
*/
public function import($resource, string $type = null, $ignoreErrors = \false, string $sourceResource = null, $exclude = null)
{
// this call collects root values
$this->collectConfigureCallsFromJustImportedConfigurableRectorDefinitions();
parent::import($resource, $type, $ignoreErrors, $sourceResource, $exclude);
$this->collectConfigureCallsFromJustImportedConfigurableRectorDefinitions();
return null;
}
private function collectConfigureCallsFromJustImportedConfigurableRectorDefinitions() : void
{
foreach ($this->container->getDefinitions() as $class => $definition) {
if (!\is_a($class, \Rector\Core\Contract\Rector\ConfigurableRectorInterface::class, \true)) {
continue;
}
$this->configureCallValuesCollector->collectFromServiceAndClassName($class, $definition);
}
}
}