Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. AutowireRequiredPropertiesPass.php

function AutowireRequiredPropertiesPass::processValue

Overrides AbstractRecursivePass::processValue

File

vendor/symfony/dependency-injection/Compiler/AutowireRequiredPropertiesPass.php, line 29

Class

AutowireRequiredPropertiesPass
Looks for definitions with autowiring enabled and registers their corresponding "#[Required]" properties.

Namespace

Symfony\Component\DependencyInjection\Compiler

Code

protected function processValue(mixed $value, bool $isRoot = false) : mixed {
    $value = parent::processValue($value, $isRoot);
    if (!$value instanceof Definition || !$value->isAutowired() || $value->isAbstract() || !$value->getClass()) {
        return $value;
    }
    if (!($reflectionClass = $this->container
        ->getReflectionClass($value->getClass(), false))) {
        return $value;
    }
    $properties = $value->getProperties();
    foreach ($reflectionClass->getProperties() as $reflectionProperty) {
        if (!($type = $reflectionProperty->getType()) instanceof \ReflectionNamedType) {
            continue;
        }
        if (!$reflectionProperty->getAttributes(Required::class)) {
            continue;
        }
        if (\array_key_exists($name = $reflectionProperty->getName(), $properties)) {
            continue;
        }
        $type = $type->getName();
        $value->setProperty($name, new TypedReference($type, $type, ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE, $name));
    }
    return $value;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal