rector/vendor/symplify/package-builder/src/DependencyInjection/CompilerPass/AutowireInterfacesCompilerPass.php
2022-09-01 09:30:44 +00:00

35 lines
1.1 KiB
PHP

<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\PackageBuilder\DependencyInjection\CompilerPass;
use RectorPrefix202209\Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use RectorPrefix202209\Symfony\Component\DependencyInjection\ContainerBuilder;
final class AutowireInterfacesCompilerPass implements CompilerPassInterface
{
/**
* @var string[]
*/
private $typesToAutowire;
/**
* @param string[] $typesToAutowire
*/
public function __construct(array $typesToAutowire)
{
$this->typesToAutowire = $typesToAutowire;
}
public function process(ContainerBuilder $containerBuilder) : void
{
$definitions = $containerBuilder->getDefinitions();
foreach ($definitions as $definition) {
foreach ($this->typesToAutowire as $typeToAutowire) {
if (!\is_a((string) $definition->getClass(), $typeToAutowire, \true)) {
continue;
}
$definition->setAutowired(\true);
continue 2;
}
}
}
}