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 implements \Doctrine\Common\Annotations\Reader
Expanded class hierarchy of SimpleAnnotationReader
2 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
File
-
core/
lib/ Drupal/ Component/ Annotation/ Doctrine/ SimpleAnnotationReader.php, line 39
Namespace
Drupal\Component\Annotation\DoctrineView source
final class SimpleAnnotationReader implements Reader {
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);
}
/**
* {@inheritDoc}
*/
public function getClassAnnotations(\ReflectionClass $class) {
return $this->parser
->parse($class->getDocComment(), 'class ' . $class->getName());
}
/**
* {@inheritDoc}
*/
public function getMethodAnnotations(\ReflectionMethod $method) {
return $this->parser
->parse($method->getDocComment(), 'method ' . $method->getDeclaringClass()->name . '::' . $method->getName() . '()');
}
/**
* {@inheritDoc}
*/
public function getPropertyAnnotations(\ReflectionProperty $property) {
return $this->parser
->parse($property->getDocComment(), 'property ' . $property->getDeclaringClass()->name . '::$' . $property->getName());
}
/**
* {@inheritDoc}
*/
public function getClassAnnotation(\ReflectionClass $class, $annotationName) {
foreach ($this->getClassAnnotations($class) as $annotation) {
if ($annotation instanceof $annotationName) {
return $annotation;
}
}
return null;
}
/**
* {@inheritDoc}
*/
public function getMethodAnnotation(\ReflectionMethod $method, $annotationName) {
foreach ($this->getMethodAnnotations($method) as $annotation) {
if ($annotation instanceof $annotationName) {
return $annotation;
}
}
return null;
}
/**
* {@inheritDoc}
*/
public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName) {
foreach ($this->getPropertyAnnotations($property) as $annotation) {
if ($annotation instanceof $annotationName) {
return $annotation;
}
}
return null;
}
}