add Symfony\ExpressionLanguage

This commit is contained in:
TomasVotruba 2018-02-23 20:04:45 +01:00
parent 38443547ec
commit 9c2176739b
3 changed files with 7 additions and 1 deletions

View File

@ -18,6 +18,7 @@
"sebastian/diff": "^3.0",
"symfony/console": "^4.0",
"symfony/dependency-injection": "^4.0",
"symfony/expression-language": "^4.0",
"symfony/finder": "^4.0",
"symplify/package-builder": "^3.2"
},

View File

@ -26,6 +26,7 @@ checkers:
- 'Rector\BetterReflection\SourceLocator\Located\LocatedSource'
- 'phpDocumentor\Reflection\Types\*'
- 'Rector\Reporting\FileDiff'
- 'Symfony\Component\ExpressionLanguage\*'
Symplify\CodingStandard\Fixer\Naming\PropertyNameMatchingTypeFixer:
extra_skipped_classes:

View File

@ -6,6 +6,7 @@ use Rector\Rector\RectorCollector;
use Rector\RectorBuilder\Contract\RectorProviderInterface;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\ExpressionLanguage\Expression;
use Symplify\PackageBuilder\DependencyInjection\DefinitionFinder;
final class RectorProvidersCompilerPass implements CompilerPassInterface
@ -15,8 +16,11 @@ final class RectorProvidersCompilerPass implements CompilerPassInterface
$rectorCollectorDefinition = DefinitionFinder::getByType($containerBuilder, RectorCollector::class);
$rectorProviderDefinitions = DefinitionFinder::findAllByType($containerBuilder, RectorProviderInterface::class);
// see https://symfony.com/doc/current/service_container/expression_language.html
foreach ($rectorProviderDefinitions as $rectorProviderDefinition) {
$methodCallArgument = sprintf("@=service('%s').provide()", $rectorProviderDefinition->getClass());
$methodCallArgument = new Expression(
sprintf('service("%s").provide()', $rectorProviderDefinition->getClass())
);
$rectorCollectorDefinition->addMethodCall('addRector', [$methodCallArgument]);
}
}