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\DependencyInjectionCode
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;
}