class SimpleAnnotationReader
Simple Annotation Reader.
Drupal adds its own version of DocParser and allows for ignoring common annotations.
@internal
Hierarchy
- class \Drupal\Component\Annotation\Doctrine\SimpleAnnotationReader
Expanded class hierarchy of SimpleAnnotationReader
3 files declare their use of SimpleAnnotationReader
- AnnotatedClassDiscovery.php in core/
lib/ Drupal/ Component/ Annotation/ Plugin/ Discovery/ AnnotatedClassDiscovery.php - AttributeDiscoveryWithAnnotations.php in core/
lib/ Drupal/ Core/ Plugin/ Discovery/ AttributeDiscoveryWithAnnotations.php - DCOM58Test.php in core/
tests/ Drupal/ Tests/ Component/ Annotation/ Doctrine/ Ticket/ DCOM58Test.php
File
-
core/
lib/ Drupal/ Component/ Annotation/ Doctrine/ SimpleAnnotationReader.php, line 37
Namespace
Drupal\Component\Annotation\DoctrineView source
final class SimpleAnnotationReader {
protected $ignoredAnnotations = [
'addtogroup' => TRUE,
'code' => TRUE,
'defgroup' => TRUE,
'deprecated' => TRUE,
'endcode' => TRUE,
'endlink' => TRUE,
'file' => TRUE,
'ingroup' => TRUE,
'group' => TRUE,
'link' => TRUE,
'mainpage' => TRUE,
'param' => TRUE,
'ref' => TRUE,
'return' => TRUE,
'section' => TRUE,
'see' => TRUE,
'subsection' => TRUE,
'throws' => TRUE,
'todo' => TRUE,
'var' => TRUE,
'{' => TRUE,
'}' => TRUE,
];
/**
* @var DocParser
*/
private $parser;
/**
* Constructor.
*
* Initializes a new SimpleAnnotationReader.
*/
public function __construct() {
$this->parser = new DocParser();
$this->parser
->setIgnoreNotImportedAnnotations(true);
$this->parser
->setIgnoredAnnotationNames($this->ignoredAnnotations);
}
/**
* Adds a namespace in which we will look for annotations.
*
* @param string $namespace
*
* @return void
*/
public function addNamespace($namespace) {
$this->parser
->addNamespace($namespace);
}
/**
* Gets the annotations applied to a class.
*
* @param ReflectionClass $class The ReflectionClass of the class from which
* the class annotations should be read.
*
* @return array<object> An array of Annotations.
*/
public function getClassAnnotations(\ReflectionClass $class) {
return $this->parser
->parse($class->getDocComment(), 'class ' . $class->getName());
}
/**
* Gets the annotations applied to a method.
*
* @param ReflectionMethod $method The ReflectionMethod of the method from which
* the annotations should be read.
*
* @return array<object> An array of Annotations.
*/
public function getMethodAnnotations(\ReflectionMethod $method) {
return $this->parser
->parse($method->getDocComment(), 'method ' . $method->getDeclaringClass()->name . '::' . $method->getName() . '()');
}
/**
* Gets the annotations applied to a property.
*
* @param ReflectionProperty $property The ReflectionProperty of the property
* from which the annotations should be read.
*
* @return array<object> An array of Annotations.
*/
public function getPropertyAnnotations(\ReflectionProperty $property) {
return $this->parser
->parse($property->getDocComment(), 'property ' . $property->getDeclaringClass()->name . '::$' . $property->getName());
}
/**
* Gets a class annotation.
*
* @param ReflectionClass $class The ReflectionClass of the class from which
* the class annotations should be read.
* @param class-string<T> $annotationName The name of the annotation.
*
* @return T|null The Annotation or NULL, if the requested annotation does not exist.
*
* @template T
*/
public function getClassAnnotation(\ReflectionClass $class, $annotationName) {
foreach ($this->getClassAnnotations($class) as $annotation) {
if ($annotation instanceof $annotationName) {
return $annotation;
}
}
return null;
}
/**
* Gets a method annotation.
*
* @param ReflectionMethod $method The ReflectionMethod to read the annotations from.
* @param class-string<T> $annotationName The name of the annotation.
*
* @return T|null The Annotation or NULL, if the requested annotation does not exist.
*
* @template T
*/
public function getMethodAnnotation(\ReflectionMethod $method, $annotationName) {
foreach ($this->getMethodAnnotations($method) as $annotation) {
if ($annotation instanceof $annotationName) {
return $annotation;
}
}
return null;
}
/**
* Gets a property annotation.
*
* @param ReflectionProperty $property The ReflectionProperty to read the annotations from.
* @param class-string<T> $annotationName The name of the annotation.
*
* @return T|null The Annotation or NULL, if the requested annotation does not exist.
*
* @template T
*/
public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName) {
foreach ($this->getPropertyAnnotations($property) as $annotation) {
if ($annotation instanceof $annotationName) {
return $annotation;
}
}
return null;
}
}
Members
| Title Sort descending | Modifiers | Object type | Summary |
|---|---|---|---|
| SimpleAnnotationReader::$ignoredAnnotations | protected | property | |
| SimpleAnnotationReader::$parser | private | property | |
| SimpleAnnotationReader::addNamespace | public | function | Adds a namespace in which we will look for annotations. |
| SimpleAnnotationReader::getClassAnnotation | public | function | Gets a class annotation. |
| SimpleAnnotationReader::getClassAnnotations | public | function | Gets the annotations applied to a class. |
| SimpleAnnotationReader::getMethodAnnotation | public | function | Gets a method annotation. |
| SimpleAnnotationReader::getMethodAnnotations | public | function | Gets the annotations applied to a method. |
| SimpleAnnotationReader::getPropertyAnnotation | public | function | Gets a property annotation. |
| SimpleAnnotationReader::getPropertyAnnotations | public | function | Gets the annotations applied to a property. |
| SimpleAnnotationReader::__construct | public | function | Constructor. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.