/usr/share/php/Zend/Code/Annotation/AnnotationManager.php is in php-zend-code 3.2.0really3.1.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | <?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Zend\Code\Annotation;
use Zend\Code\Annotation\Parser\ParserInterface;
use Zend\EventManager\Event;
use Zend\EventManager\EventManager;
use Zend\EventManager\EventManagerAwareInterface;
use Zend\EventManager\EventManagerInterface;
/**
* Pluggable annotation manager
*
* Simply composes an EventManager. When createAnnotation() is called, it fires
* off an event of the same name, passing it the resolved annotation class, the
* annotation content, and the raw annotation string; the first listener to
* return an object will halt execution of the event, and that object will be
* returned as the annotation.
*/
class AnnotationManager implements EventManagerAwareInterface
{
const EVENT_CREATE_ANNOTATION = 'createAnnotation';
/**
* @var EventManagerInterface
*/
protected $events;
/**
* Set the event manager instance
*
* @param EventManagerInterface $events
* @return AnnotationManager
*/
public function setEventManager(EventManagerInterface $events)
{
$events->setIdentifiers([
__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, [$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([
'class' => $annotationData[0],
'content' => $annotationData[1],
'raw' => $annotationData[2],
]);
$eventManager = $this->getEventManager();
$results = $eventManager->triggerEventUntil(function ($r) {
return (is_object($r));
}, $event);
$annotation = $results->last();
return (is_object($annotation) ? $annotation : false);
}
}
|