[DependencyInjection] Added type-hints on compiler passes.

This commit is contained in:
Alexander M. Turek 2019-06-27 23:50:32 +02:00
parent a25848b2b5
commit d5bc28ad20
28 changed files with 37 additions and 54 deletions

View File

@ -68,11 +68,10 @@ abstract class AbstractRecursivePass implements CompilerPassInterface
* Processes a value found in a definition tree. * Processes a value found in a definition tree.
* *
* @param mixed $value * @param mixed $value
* @param bool $isRoot
* *
* @return mixed The processed value * @return mixed The processed value
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (\is_array($value)) { if (\is_array($value)) {
foreach ($value as $k => $v) { foreach ($value as $k => $v) {
@ -105,14 +104,11 @@ abstract class AbstractRecursivePass implements CompilerPassInterface
} }
/** /**
* @param Definition $definition
* @param bool $required
*
* @return \ReflectionFunctionAbstract|null * @return \ReflectionFunctionAbstract|null
* *
* @throws RuntimeException * @throws RuntimeException
*/ */
protected function getConstructor(Definition $definition, $required) protected function getConstructor(Definition $definition, bool $required)
{ {
if (\is_string($factory = $definition->getFactory())) { if (\is_string($factory = $definition->getFactory())) {
if (!\function_exists($factory)) { if (!\function_exists($factory)) {
@ -161,14 +157,11 @@ abstract class AbstractRecursivePass implements CompilerPassInterface
} }
/** /**
* @param Definition $definition
* @param string $method
*
* @throws RuntimeException * @throws RuntimeException
* *
* @return \ReflectionFunctionAbstract * @return \ReflectionFunctionAbstract
*/ */
protected function getReflectionMethod(Definition $definition, $method) protected function getReflectionMethod(Definition $definition, string $method)
{ {
if ('__construct' === $method) { if ('__construct' === $method) {
return $this->getConstructor($definition, true); return $this->getConstructor($definition, true);

View File

@ -74,7 +74,7 @@ class AnalyzeServiceReferencesPass extends AbstractRecursivePass
} }
} }
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
$lazy = $this->lazy; $lazy = $this->lazy;
$inExpression = $this->inExpression(); $inExpression = $this->inExpression();

View File

@ -65,7 +65,7 @@ class AutowirePass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
try { try {
return $this->doProcessValue($value, $isRoot); return $this->doProcessValue($value, $isRoot);
@ -80,7 +80,7 @@ class AutowirePass extends AbstractRecursivePass
} }
} }
private function doProcessValue($value, $isRoot = false) private function doProcessValue($value, bool $isRoot = false)
{ {
if ($value instanceof TypedReference) { if ($value instanceof TypedReference) {
if ($ref = $this->getAutowiredReference($value)) { if ($ref = $this->getAutowiredReference($value)) {
@ -373,7 +373,7 @@ class AutowirePass extends AbstractRecursivePass
$this->ambiguousServiceTypes[$type][] = $id; $this->ambiguousServiceTypes[$type][] = $id;
} }
private function createTypeNotFoundMessageCallback(TypedReference $reference, $label) private function createTypeNotFoundMessageCallback(TypedReference $reference, string $label)
{ {
$container = new ContainerBuilder($this->container->getParameterBag()); $container = new ContainerBuilder($this->container->getParameterBag());
$container->setAliases($this->container->getAliases()); $container->setAliases($this->container->getAliases());
@ -386,7 +386,7 @@ class AutowirePass extends AbstractRecursivePass
}; };
} }
private function createTypeNotFoundMessage(ContainerBuilder $container, TypedReference $reference, $label, string $currentId) private function createTypeNotFoundMessage(ContainerBuilder $container, TypedReference $reference, string $label, string $currentId)
{ {
if (!$r = $container->getReflectionClass($type = $reference->getType(), false)) { if (!$r = $container->getReflectionClass($type = $reference->getType(), false)) {
// either $type does not exist or a parent class does not exist // either $type does not exist or a parent class does not exist
@ -444,7 +444,7 @@ class AutowirePass extends AbstractRecursivePass
return sprintf(' You should maybe alias this %s to %s.', class_exists($type, false) ? 'class' : 'interface', $message); return sprintf(' You should maybe alias this %s to %s.', class_exists($type, false) ? 'class' : 'interface', $message);
} }
private function getAliasesSuggestionForType(ContainerBuilder $container, $type, $extraContext = null) private function getAliasesSuggestionForType(ContainerBuilder $container, string $type, $extraContext = null)
{ {
$aliases = []; $aliases = [];
foreach (class_parents($type) + class_implements($type) as $parent) { foreach (class_parents($type) + class_implements($type) as $parent) {

View File

@ -23,7 +23,7 @@ class AutowireRequiredMethodsPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
$value = parent::processValue($value, $isRoot); $value = parent::processValue($value, $isRoot);

View File

@ -32,7 +32,7 @@ class CheckArgumentsValidityPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (!$value instanceof Definition) { if (!$value instanceof Definition) {
return parent::processValue($value, $isRoot); return parent::processValue($value, $isRoot);

View File

@ -43,7 +43,7 @@ class CheckExceptionOnInvalidReferenceBehaviorPass extends AbstractRecursivePass
} }
} }
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (!$value instanceof Reference) { if (!$value instanceof Reference) {
return parent::processValue($value, $isRoot); return parent::processValue($value, $isRoot);

View File

@ -25,7 +25,7 @@ use Symfony\Component\DependencyInjection\Reference;
*/ */
class CheckReferenceValidityPass extends AbstractRecursivePass class CheckReferenceValidityPass extends AbstractRecursivePass
{ {
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if ($isRoot && $value instanceof Definition && ($value->isSynthetic() || $value->isAbstract())) { if ($isRoot && $value instanceof Definition && ($value->isSynthetic() || $value->isAbstract())) {
return $value; return $value;

View File

@ -53,12 +53,8 @@ class Compiler
/** /**
* Adds a pass to the PassConfig. * Adds a pass to the PassConfig.
*
* @param CompilerPassInterface $pass A compiler pass
* @param string $type The type of the pass
* @param int $priority Used to sort the passes
*/ */
public function addPass(CompilerPassInterface $pass, $type = PassConfig::TYPE_BEFORE_OPTIMIZATION, int $priority = 0) public function addPass(CompilerPassInterface $pass, string $type = PassConfig::TYPE_BEFORE_OPTIMIZATION, int $priority = 0)
{ {
$this->passConfig->addPass($pass, $type, $priority); $this->passConfig->addPass($pass, $type, $priority);
} }

View File

@ -26,7 +26,7 @@ class DefinitionErrorExceptionPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (!$value instanceof Definition || !$value->hasErrors()) { if (!$value instanceof Definition || !$value->hasErrors()) {
return parent::processValue($value, $isRoot); return parent::processValue($value, $isRoot);

View File

@ -101,7 +101,7 @@ class InlineServiceDefinitionsPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if ($value instanceof ArgumentInterface) { if ($value instanceof ArgumentInterface) {
// Reference found in ArgumentInterface::getValues() are not inlineable // Reference found in ArgumentInterface::getValues() are not inlineable
@ -155,7 +155,7 @@ class InlineServiceDefinitionsPass extends AbstractRecursivePass
* *
* @return bool If the definition is inlineable * @return bool If the definition is inlineable
*/ */
private function isInlineableDefinition($id, Definition $definition) private function isInlineableDefinition(string $id, Definition $definition)
{ {
if ($definition->hasErrors() || $definition->isDeprecated() || $definition->isLazy() || $definition->isSynthetic()) { if ($definition->hasErrors() || $definition->isDeprecated() || $definition->isLazy() || $definition->isSynthetic()) {
return false; return false;

View File

@ -110,13 +110,9 @@ class PassConfig
/** /**
* Adds a pass. * Adds a pass.
* *
* @param CompilerPassInterface $pass A Compiler pass
* @param string $type The pass type
* @param int $priority Used to sort the passes
*
* @throws InvalidArgumentException when a pass type doesn't exist * @throws InvalidArgumentException when a pass type doesn't exist
*/ */
public function addPass(CompilerPassInterface $pass, $type = self::TYPE_BEFORE_OPTIMIZATION, int $priority = 0) public function addPass(CompilerPassInterface $pass, string $type = self::TYPE_BEFORE_OPTIMIZATION, int $priority = 0)
{ {
$property = $type.'Passes'; $property = $type.'Passes';
if (!isset($this->$property)) { if (!isset($this->$property)) {

View File

@ -60,7 +60,7 @@ class RegisterEnvVarProcessorsPass implements CompilerPassInterface
} }
} }
private static function validateProvidedTypes($types, $class) private static function validateProvidedTypes(string $types, string $class)
{ {
$types = explode('|', $types); $types = explode('|', $types);

View File

@ -25,7 +25,7 @@ use Symfony\Contracts\Service\ServiceSubscriberInterface;
*/ */
class RegisterServiceSubscribersPass extends AbstractRecursivePass class RegisterServiceSubscribersPass extends AbstractRecursivePass
{ {
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (!$value instanceof Definition || $value->isAbstract() || $value->isSynthetic() || !$value->hasTag('container.service_subscriber')) { if (!$value instanceof Definition || $value->isAbstract() || $value->isSynthetic() || !$value->hasTag('container.service_subscriber')) {
return parent::processValue($value, $isRoot); return parent::processValue($value, $isRoot);

View File

@ -75,7 +75,7 @@ class RemoveUnusedDefinitionsPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (!$value instanceof Reference) { if (!$value instanceof Reference) {
return parent::processValue($value, $isRoot); return parent::processValue($value, $isRoot);

View File

@ -80,7 +80,7 @@ class ReplaceAliasByActualDefinitionPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if ($value instanceof Reference && isset($this->replacements[$referenceId = (string) $value])) { if ($value instanceof Reference && isset($this->replacements[$referenceId = (string) $value])) {
// Perform the replacement // Perform the replacement

View File

@ -90,7 +90,7 @@ class ResolveBindingsPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if ($value instanceof TypedReference && $value->getType() === (string) $value) { if ($value instanceof TypedReference && $value->getType() === (string) $value) {
// Already checked // Already checked

View File

@ -28,7 +28,7 @@ class ResolveChildDefinitionsPass extends AbstractRecursivePass
{ {
private $currentPath; private $currentPath;
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (!$value instanceof Definition) { if (!$value instanceof Definition) {
return parent::processValue($value, $isRoot); return parent::processValue($value, $isRoot);

View File

@ -18,7 +18,7 @@ use Symfony\Component\DependencyInjection\Definition;
*/ */
class ResolveEnvPlaceholdersPass extends AbstractRecursivePass class ResolveEnvPlaceholdersPass extends AbstractRecursivePass
{ {
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (\is_string($value)) { if (\is_string($value)) {
return $this->container->resolveEnvPlaceholders($value, true); return $this->container->resolveEnvPlaceholders($value, true);

View File

@ -22,7 +22,7 @@ class ResolveFactoryClassPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if ($value instanceof Definition && \is_array($factory = $value->getFactory()) && null === $factory[0]) { if ($value instanceof Definition && \is_array($factory = $value->getFactory()) && null === $factory[0]) {
if (null === $class = $value->getClass()) { if (null === $class = $value->getClass()) {

View File

@ -47,7 +47,7 @@ class ResolveHotPathPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if ($value instanceof ArgumentInterface) { if ($value instanceof ArgumentInterface) {
return $value; return $value;

View File

@ -44,7 +44,7 @@ class ResolveInstanceofConditionalsPass implements CompilerPassInterface
} }
} }
private function processDefinition(ContainerBuilder $container, $id, Definition $definition) private function processDefinition(ContainerBuilder $container, string $id, Definition $definition)
{ {
$instanceofConditionals = $definition->getInstanceofConditionals(); $instanceofConditionals = $definition->getInstanceofConditionals();
$autoconfiguredInstanceof = $definition->isAutoconfigured() ? $container->getAutoconfiguredInstanceof() : []; $autoconfiguredInstanceof = $definition->isAutoconfigured() ? $container->getAutoconfiguredInstanceof() : [];

View File

@ -53,7 +53,7 @@ class ResolveInvalidReferencesPass implements CompilerPassInterface
* *
* @throws RuntimeException When an invalid reference is found * @throws RuntimeException When an invalid reference is found
*/ */
private function processValue($value, $rootLevel = 0, $level = 0) private function processValue($value, int $rootLevel = 0, int $level = 0)
{ {
if ($value instanceof ServiceClosureArgument) { if ($value instanceof ServiceClosureArgument) {
$value->setValues($this->processValue($value->getValues(), 1, 1)); $value->setValues($this->processValue($value->getValues(), 1, 1));

View File

@ -26,7 +26,7 @@ class ResolveNamedArgumentsPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (!$value instanceof Definition) { if (!$value instanceof Definition) {
return parent::processValue($value, $isRoot); return parent::processValue($value, $isRoot);

View File

@ -58,7 +58,7 @@ class ResolveParameterPlaceHoldersPass extends AbstractRecursivePass
$this->bag = null; $this->bag = null;
} }
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (\is_string($value)) { if (\is_string($value)) {
$v = $this->bag->resolveValue($value); $v = $this->bag->resolveValue($value);

View File

@ -42,7 +42,7 @@ class ResolveReferencesToAliasesPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (!$value instanceof Reference) { if (!$value instanceof Reference) {
return parent::processValue($value, $isRoot); return parent::processValue($value, $isRoot);

View File

@ -25,7 +25,7 @@ class ResolveServiceSubscribersPass extends AbstractRecursivePass
{ {
private $serviceLocator; private $serviceLocator;
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if ($value instanceof Reference && $this->serviceLocator && \in_array((string) $value, [ContainerInterface::class, ServiceProviderInterface::class], true)) { if ($value instanceof Reference && $this->serviceLocator && \in_array((string) $value, [ContainerInterface::class, ServiceProviderInterface::class], true)) {
return new Reference($this->serviceLocator); return new Reference($this->serviceLocator);

View File

@ -25,7 +25,7 @@ class ResolveTaggedIteratorArgumentPass extends AbstractRecursivePass
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if (!$value instanceof TaggedIteratorArgument) { if (!$value instanceof TaggedIteratorArgument) {
return parent::processValue($value, $isRoot); return parent::processValue($value, $isRoot);

View File

@ -29,7 +29,7 @@ final class ServiceLocatorTagPass extends AbstractRecursivePass
{ {
use PriorityTaggedServiceTrait; use PriorityTaggedServiceTrait;
protected function processValue($value, $isRoot = false) protected function processValue($value, bool $isRoot = false)
{ {
if ($value instanceof ServiceLocatorArgument) { if ($value instanceof ServiceLocatorArgument) {
if ($value->getTaggedIteratorArgument()) { if ($value->getTaggedIteratorArgument()) {
@ -87,11 +87,9 @@ final class ServiceLocatorTagPass extends AbstractRecursivePass
} }
/** /**
* @param ContainerBuilder $container * @param Reference[] $refMap
* @param Reference[] $refMap
* @param string|null $callerId
*/ */
public static function register(ContainerBuilder $container, array $refMap, $callerId = null): Reference public static function register(ContainerBuilder $container, array $refMap, string $callerId = null): Reference
{ {
foreach ($refMap as $id => $ref) { foreach ($refMap as $id => $ref) {
if (!$ref instanceof Reference) { if (!$ref instanceof Reference) {