setIdentifiers(array( __CLASS__, get_class($this), )); $this->events = $events; return $this; } /** * Retrieve event manager * * Lazy loads an instance if none registered. * * @return EventManagerInterface */ public function getEventManager() { if (null === $this->events) { $this->setEventManager(new EventManager()); } return $this->events; } /** * Attach a parser to listen to the createAnnotation event * * @param ParserInterface $parser * @return AnnotationManager */ public function attach(ParserInterface $parser) { $this->getEventManager() ->attach(self::EVENT_CREATE_ANNOTATION, array($parser, 'onCreateAnnotation')); return $this; } /** * Create Annotation * * @param string[] $annotationData * @return false|\stdClass */ public function createAnnotation(array $annotationData) { $event = new Event(); $event->setName(self::EVENT_CREATE_ANNOTATION); $event->setTarget($this); $event->setParams(array( 'class' => $annotationData[0], 'content' => $annotationData[1], 'raw' => $annotationData[2], )); $eventManager = $this->getEventManager(); $results = $eventManager->trigger($event, function ($r) { return (is_object($r)); }); $annotation = $results->last(); return (is_object($annotation) ? $annotation : false); } }