Chris@0: . Chris@0: */ Chris@0: Chris@0: namespace Doctrine\Common\Annotations; Chris@0: Chris@0: /** Chris@0: * Simple Annotation Reader. Chris@0: * Chris@0: * This annotation reader is intended to be used in projects where you have Chris@0: * full-control over all annotations that are available. Chris@0: * Chris@0: * @since 2.2 Chris@0: * @author Johannes M. Schmitt Chris@0: * @author Fabio B. Silva Chris@0: */ Chris@0: class SimpleAnnotationReader implements Reader Chris@0: { Chris@0: /** Chris@0: * @var DocParser Chris@0: */ Chris@0: private $parser; Chris@0: Chris@0: /** Chris@0: * Constructor. Chris@0: * Chris@0: * Initializes a new SimpleAnnotationReader. Chris@0: */ Chris@0: public function __construct() Chris@0: { Chris@0: $this->parser = new DocParser(); Chris@0: $this->parser->setIgnoreNotImportedAnnotations(true); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Adds a namespace in which we will look for annotations. Chris@0: * Chris@0: * @param string $namespace Chris@0: * Chris@0: * @return void Chris@0: */ Chris@0: public function addNamespace($namespace) Chris@0: { Chris@0: $this->parser->addNamespace($namespace); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritDoc} Chris@0: */ Chris@0: public function getClassAnnotations(\ReflectionClass $class) Chris@0: { Chris@0: return $this->parser->parse($class->getDocComment(), 'class '.$class->getName()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritDoc} Chris@0: */ Chris@0: public function getMethodAnnotations(\ReflectionMethod $method) Chris@0: { Chris@0: return $this->parser->parse($method->getDocComment(), 'method '.$method->getDeclaringClass()->name.'::'.$method->getName().'()'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritDoc} Chris@0: */ Chris@0: public function getPropertyAnnotations(\ReflectionProperty $property) Chris@0: { Chris@0: return $this->parser->parse($property->getDocComment(), 'property '.$property->getDeclaringClass()->name.'::$'.$property->getName()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritDoc} Chris@0: */ Chris@0: public function getClassAnnotation(\ReflectionClass $class, $annotationName) Chris@0: { Chris@0: foreach ($this->getClassAnnotations($class) as $annot) { Chris@0: if ($annot instanceof $annotationName) { Chris@0: return $annot; Chris@0: } Chris@0: } Chris@0: Chris@0: return null; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritDoc} Chris@0: */ Chris@0: public function getMethodAnnotation(\ReflectionMethod $method, $annotationName) Chris@0: { Chris@0: foreach ($this->getMethodAnnotations($method) as $annot) { Chris@0: if ($annot instanceof $annotationName) { Chris@0: return $annot; Chris@0: } Chris@0: } Chris@0: Chris@0: return null; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritDoc} Chris@0: */ Chris@0: public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName) Chris@0: { Chris@0: foreach ($this->getPropertyAnnotations($property) as $annot) { Chris@0: if ($annot instanceof $annotationName) { Chris@0: return $annot; Chris@0: } Chris@0: } Chris@0: Chris@0: return null; Chris@0: } Chris@0: }