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

ClassReflection.php

Zuletzt modifiziert: 09.10.2024, 12:57 - Dateigröße: 7.03 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\Reflection;
 011   
 012  use ReflectionClass;
 013  use Zend\Code\Annotation\AnnotationCollection;
 014  use Zend\Code\Annotation\AnnotationManager;
 015  use Zend\Code\Scanner\AnnotationScanner;
 016  use Zend\Code\Scanner\FileScanner;
 017   
 018  class ClassReflection extends ReflectionClass implements ReflectionInterface
 019  {
 020      /**
 021       * @var AnnotationScanner
 022       */
 023      protected $annotations = null;
 024   
 025      /**
 026       * @var DocBlockReflection
 027       */
 028      protected $docBlock = null;
 029   
 030      /**
 031       * Return the reflection file of the declaring file.
 032       *
 033       * @return FileReflection
 034       */
 035      public function getDeclaringFile()
 036      {
 037          $instance = new FileReflection($this->getFileName());
 038   
 039          return $instance;
 040      }
 041   
 042      /**
 043       * Return the classes DocBlock reflection object
 044       *
 045       * @return DocBlockReflection
 046       * @throws Exception\ExceptionInterface for missing DocBock or invalid reflection class
 047       */
 048      public function getDocBlock()
 049      {
 050          if (isset($this->docBlock)) {
 051              return $this->docBlock;
 052          }
 053   
 054          if ('' == $this->getDocComment()) {
 055              return false;
 056          }
 057   
 058          $this->docBlock = new DocBlockReflection($this);
 059   
 060          return $this->docBlock;
 061      }
 062   
 063      /**
 064       * @param  AnnotationManager $annotationManager
 065       * @return AnnotationCollection
 066       */
 067      public function getAnnotations(AnnotationManager $annotationManager)
 068      {
 069          $docComment = $this->getDocComment();
 070   
 071          if ($docComment == '') {
 072              return false;
 073          }
 074   
 075          if ($this->annotations) {
 076              return $this->annotations;
 077          }
 078   
 079          $fileScanner       = $this->createFileScanner($this->getFileName());
 080          $nameInformation   = $fileScanner->getClassNameInformation($this->getName());
 081   
 082          if (!$nameInformation) {
 083              return false;
 084          }
 085   
 086          $this->annotations = new AnnotationScanner($annotationManager, $docComment, $nameInformation);
 087   
 088          return $this->annotations;
 089      }
 090   
 091      /**
 092       * Return the start line of the class
 093       *
 094       * @param  bool $includeDocComment
 095       * @return int
 096       */
 097      public function getStartLine($includeDocComment = false)
 098      {
 099          if ($includeDocComment && $this->getDocComment() != '') {
 100              return $this->getDocBlock()->getStartLine();
 101          }
 102   
 103          return parent::getStartLine();
 104      }
 105   
 106      /**
 107       * Return the contents of the class
 108       *
 109       * @param  bool $includeDocBlock
 110       * @return string
 111       */
 112      public function getContents($includeDocBlock = true)
 113      {
 114          $fileName = $this->getFileName();
 115   
 116          if (false === $fileName || ! file_exists($fileName)) {
 117              return '';
 118          }
 119   
 120          $filelines = file($fileName);
 121          $startnum  = $this->getStartLine($includeDocBlock);
 122          $endnum    = $this->getEndLine() - $this->getStartLine();
 123   
 124          // Ensure we get between the open and close braces
 125          $lines = array_slice($filelines, $startnum, $endnum);
 126          array_unshift($lines, $filelines[$startnum-1]);
 127   
 128          return strstr(implode('', $lines), '{');
 129      }
 130   
 131      /**
 132       * Get all reflection objects of implemented interfaces
 133       *
 134       * @return ClassReflection[]
 135       */
 136      public function getInterfaces()
 137      {
 138          $phpReflections  = parent::getInterfaces();
 139          $zendReflections = array();
 140          while ($phpReflections && ($phpReflection = array_shift($phpReflections))) {
 141              $instance          = new ClassReflection($phpReflection->getName());
 142              $zendReflections[] = $instance;
 143              unset($phpReflection);
 144          }
 145          unset($phpReflections);
 146   
 147          return $zendReflections;
 148      }
 149   
 150      /**
 151       * Return method reflection by name
 152       *
 153       * @param  string $name
 154       * @return MethodReflection
 155       */
 156      public function getMethod($name)
 157      {
 158          $method = new MethodReflection($this->getName(), parent::getMethod($name)->getName());
 159   
 160          return $method;
 161      }
 162   
 163      /**
 164       * Get reflection objects of all methods
 165       *
 166       * @param  int $filter
 167       * @return MethodReflection[]
 168       */
 169      public function getMethods($filter = -1)
 170      {
 171          $methods = array();
 172          foreach (parent::getMethods($filter) as $method) {
 173              $instance  = new MethodReflection($this->getName(), $method->getName());
 174              $methods[] = $instance;
 175          }
 176   
 177          return $methods;
 178      }
 179   
 180      /**
 181       * Returns an array of reflection classes of traits used by this class.
 182       *
 183       * @return array|null
 184       */
 185      public function getTraits()
 186      {
 187          $vals = array();
 188          $traits = parent::getTraits();
 189          if ($traits === null) {
 190              return;
 191          }
 192   
 193          foreach ($traits as $trait) {
 194              $vals[] = new ClassReflection($trait->getName());
 195          }
 196   
 197          return $vals;
 198      }
 199   
 200      /**
 201       * Get parent reflection class of reflected class
 202       *
 203       * @return ClassReflection|bool
 204       */
 205      public function getParentClass()
 206      {
 207          $phpReflection = parent::getParentClass();
 208          if ($phpReflection) {
 209              $zendReflection = new ClassReflection($phpReflection->getName());
 210              unset($phpReflection);
 211   
 212              return $zendReflection;
 213          }
 214   
 215          return false;
 216      }
 217   
 218      /**
 219       * Return reflection property of this class by name
 220       *
 221       * @param  string $name
 222       * @return PropertyReflection
 223       */
 224      public function getProperty($name)
 225      {
 226          $phpReflection  = parent::getProperty($name);
 227          $zendReflection = new PropertyReflection($this->getName(), $phpReflection->getName());
 228          unset($phpReflection);
 229   
 230          return $zendReflection;
 231      }
 232   
 233      /**
 234       * Return reflection properties of this class
 235       *
 236       * @param  int $filter
 237       * @return PropertyReflection[]
 238       */
 239      public function getProperties($filter = -1)
 240      {
 241          $phpReflections  = parent::getProperties($filter);
 242          $zendReflections = array();
 243          while ($phpReflections && ($phpReflection = array_shift($phpReflections))) {
 244              $instance          = new PropertyReflection($this->getName(), $phpReflection->getName());
 245              $zendReflections[] = $instance;
 246              unset($phpReflection);
 247          }
 248          unset($phpReflections);
 249   
 250          return $zendReflections;
 251      }
 252   
 253      /**
 254       * @return string
 255       */
 256      public function toString()
 257      {
 258          return parent::__toString();
 259      }
 260   
 261      /**
 262       * @return string
 263       */
 264      public function __toString()
 265      {
 266          return parent::__toString();
 267      }
 268   
 269      /**
 270       * Creates a new FileScanner instance.
 271       *
 272       * By having this as a seperate method it allows the method to be overridden
 273       * if a different FileScanner is needed.
 274       *
 275       * @param  string $filename
 276       *
 277       * @return FileScanner
 278       */
 279      protected function createFileScanner($filename)
 280      {
 281          return new FileScanner($filename);
 282      }
 283  }
 284