class Registry
Same name in this branch
- 11.1.x vendor/open-telemetry/sdk/Registry.php \OpenTelemetry\SDK\Registry
- 11.1.x vendor/phpunit/phpunit/src/TextUI/Configuration/Registry.php \PHPUnit\TextUI\Configuration\Registry
- 11.1.x vendor/phpunit/phpunit/src/Metadata/Parser/Registry.php \PHPUnit\Metadata\Parser\Registry
- 11.1.x vendor/symfony/var-exporter/Internal/Registry.php \Symfony\Component\VarExporter\Internal\Registry
- 11.1.x core/lib/Drupal/Core/Theme/Registry.php \Drupal\Core\Theme\Registry
Reflection information, and therefore DocBlock information, is static within a single PHP process. It is therefore okay to use a Singleton registry here.
@no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
@internal This class is not covered by the backward compatibility promise for PHPUnit
Hierarchy
- class \PHPUnit\Metadata\Annotation\Parser\Registry
Expanded class hierarchy of Registry
1 file declares its use of Registry
- AnnotationParser.php in vendor/
phpunit/ phpunit/ src/ Metadata/ Parser/ AnnotationParser.php
File
-
vendor/
phpunit/ phpunit/ src/ Metadata/ Parser/ Annotation/ Registry.php, line 26
Namespace
PHPUnit\Metadata\Annotation\ParserView source
final class Registry {
private static ?Registry $instance = null;
/**
* @psalm-var array<string, DocBlock> indexed by class name
*/
private array $classDocBlocks = [];
/**
* @psalm-var array<string, array<string, DocBlock>> indexed by class name and method name
*/
private array $methodDocBlocks = [];
public static function getInstance() : self {
return self::$instance ?? (self::$instance = new self());
}
/**
* @psalm-param class-string $class
*
* @throws AnnotationsAreNotSupportedForInternalClassesException
* @throws ReflectionException
*/
public function forClassName(string $class) : DocBlock {
if (array_key_exists($class, $this->classDocBlocks)) {
return $this->classDocBlocks[$class];
}
try {
$reflection = new ReflectionClass($class);
// @codeCoverageIgnoreStart
} catch (\ReflectionException $e) {
throw new ReflectionException($e->getMessage(), $e->getCode(), $e);
}
// @codeCoverageIgnoreEnd
return $this->classDocBlocks[$class] = DocBlock::ofClass($reflection);
}
/**
* @psalm-param class-string $classInHierarchy
*
* @throws AnnotationsAreNotSupportedForInternalClassesException
* @throws ReflectionException
*/
public function forMethod(string $classInHierarchy, string $method) : DocBlock {
if (isset($this->methodDocBlocks[$classInHierarchy][$method])) {
return $this->methodDocBlocks[$classInHierarchy][$method];
}
try {
$reflection = new ReflectionMethod($classInHierarchy, $method);
// @codeCoverageIgnoreStart
} catch (\ReflectionException $e) {
throw new ReflectionException($e->getMessage(), $e->getCode(), $e);
}
// @codeCoverageIgnoreEnd
return $this->methodDocBlocks[$classInHierarchy][$method] = DocBlock::ofMethod($reflection);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
Registry::$classDocBlocks | private | property | @psalm-var array<string, DocBlock> indexed by class name |
Registry::$instance | private static | property | |
Registry::$methodDocBlocks | private | property | @psalm-var array<string, array<string, DocBlock>> indexed by class name and method name |
Registry::forClassName | public | function | @psalm-param class-string $class |
Registry::forMethod | public | function | @psalm-param class-string $classInHierarchy |
Registry::getInstance | public static | function |