Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

AnnotationManager.php

Zuletzt modifiziert: 09.10.2024, 12:57 - Dateigröße: 2.91 KiB


 001  <?php
 002  /**
 003   * Zend Framework (http://framework.zend.com/)
 004   *
 005   * @link      http://github.com/zendframework/zf2 for the canonical source repository
 006   * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
 007   * @license   http://framework.zend.com/license/new-bsd New BSD License
 008   */
 009   
 010  namespace Zend\Code\Annotation;
 011   
 012  use Zend\Code\Annotation\Parser\ParserInterface;
 013  use Zend\EventManager\Event;
 014  use Zend\EventManager\EventManager;
 015  use Zend\EventManager\EventManagerAwareInterface;
 016  use Zend\EventManager\EventManagerInterface;
 017   
 018  /**
 019   * Pluggable annotation manager
 020   *
 021   * Simply composes an EventManager. When createAnnotation() is called, it fires
 022   * off an event of the same name, passing it the resolved annotation class, the
 023   * annotation content, and the raw annotation string; the first listener to
 024   * return an object will halt execution of the event, and that object will be
 025   * returned as the annotation.
 026   */
 027  class AnnotationManager implements EventManagerAwareInterface
 028  {
 029      const EVENT_CREATE_ANNOTATION = 'createAnnotation';
 030   
 031      /**
 032       * @var EventManagerInterface
 033       */
 034      protected $events;
 035   
 036      /**
 037       * Set the event manager instance
 038       *
 039       * @param  EventManagerInterface $events
 040       * @return AnnotationManager
 041       */
 042      public function setEventManager(EventManagerInterface $events)
 043      {
 044          $events->setIdentifiers(array(
 045              __CLASS__,
 046              get_class($this),
 047          ));
 048          $this->events = $events;
 049   
 050          return $this;
 051      }
 052   
 053      /**
 054       * Retrieve event manager
 055       *
 056       * Lazy loads an instance if none registered.
 057       *
 058       * @return EventManagerInterface
 059       */
 060      public function getEventManager()
 061      {
 062          if (null === $this->events) {
 063              $this->setEventManager(new EventManager());
 064          }
 065   
 066          return $this->events;
 067      }
 068   
 069      /**
 070       * Attach a parser to listen to the createAnnotation event
 071       *
 072       * @param  ParserInterface $parser
 073       * @return AnnotationManager
 074       */
 075      public function attach(ParserInterface $parser)
 076      {
 077          $this->getEventManager()
 078               ->attach(self::EVENT_CREATE_ANNOTATION, array($parser, 'onCreateAnnotation'));
 079   
 080          return $this;
 081      }
 082   
 083      /**
 084       * Create Annotation
 085       *
 086       * @param  string[] $annotationData
 087       * @return false|\stdClass
 088       */
 089      public function createAnnotation(array $annotationData)
 090      {
 091          $event = new Event();
 092          $event->setName(self::EVENT_CREATE_ANNOTATION);
 093          $event->setTarget($this);
 094          $event->setParams(array(
 095              'class'   => $annotationData[0],
 096              'content' => $annotationData[1],
 097              'raw'     => $annotationData[2],
 098          ));
 099   
 100          $eventManager = $this->getEventManager();
 101          $results = $eventManager->trigger($event, function ($r) {
 102              return (is_object($r));
 103          });
 104   
 105          $annotation = $results->last();
 106   
 107          return (is_object($annotation) ? $annotation : false);
 108      }
 109  }
 110