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

Breadcrumb

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

function ContainerBuilder::getReflectionClass

Retrieves the requested reflection class and registers it for resource tracking.

@final

Throws

\ReflectionException when a parent class/interface/trait is not found and $throw is true

1 call to ContainerBuilder::getReflectionClass()
ContainerBuilder::compile in vendor/symfony/dependency-injection/ContainerBuilder.php
Compiles the container.

File

vendor/symfony/dependency-injection/ContainerBuilder.php, line 386

Class

ContainerBuilder
ContainerBuilder is a DI container that provides an API to easily describe services.

Namespace

Symfony\Component\DependencyInjection

Code

public function getReflectionClass(?string $class, bool $throw = true) : ?\ReflectionClass {
    if (!($class = $this->getParameterBag()
        ->resolveValue($class))) {
        return null;
    }
    if (isset(self::INTERNAL_TYPES[$class])) {
        return null;
    }
    $resource = $classReflector = null;
    try {
        if (isset($this->classReflectors[$class])) {
            $classReflector = $this->classReflectors[$class];
        }
        elseif (class_exists(ClassExistenceResource::class)) {
            $resource = new ClassExistenceResource($class, false);
            $classReflector = $resource->isFresh(0) ? false : new \ReflectionClass($class);
        }
        else {
            $classReflector = class_exists($class) || interface_exists($class, false) ? new \ReflectionClass($class) : false;
        }
    } catch (\ReflectionException $e) {
        if ($throw) {
            throw $e;
        }
    }
    if ($this->trackResources) {
        if (!$classReflector) {
            $this->addResource($resource ?? new ClassExistenceResource($class, false));
        }
        elseif (!$classReflector->isInternal()) {
            $path = $classReflector->getFileName();
            if (!$this->inVendors($path)) {
                $this->addResource(new ReflectionClassResource($classReflector, $this->vendors));
            }
        }
        $this->classReflectors[$class] = $classReflector;
    }
    return $classReflector ?: null;
}

API Navigation

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