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

PropertyScanner.php

Zuletzt modifiziert: 09.10.2024, 12:57 - Dateigröße: 6.63 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\Scanner;
 011   
 012  use Zend\Code\Annotation;
 013  use Zend\Code\Exception;
 014  use Zend\Code\NameInformation;
 015   
 016  class PropertyScanner implements ScannerInterface
 017  {
 018      const T_BOOLEAN = "boolean";
 019      const T_INTEGER = "int";
 020      const T_STRING  = "string";
 021      const T_ARRAY   = "array";
 022      const T_UNKNOWN = "unknown";
 023   
 024      /**
 025       * @var bool
 026       */
 027      protected $isScanned = false;
 028   
 029      /**
 030       * @var array
 031       */
 032      protected $tokens;
 033   
 034      /**
 035       * @var NameInformation
 036       */
 037      protected $nameInformation;
 038   
 039      /**
 040       * @var string
 041       */
 042      protected $class;
 043   
 044      /**
 045       * @var ClassScanner
 046       */
 047      protected $scannerClass;
 048   
 049      /**
 050       * @var int
 051       */
 052      protected $lineStart;
 053   
 054      /**
 055       * @var bool
 056       */
 057      protected $isProtected = false;
 058   
 059      /**
 060       * @var bool
 061       */
 062      protected $isPublic = true;
 063   
 064      /**
 065       * @var bool
 066       */
 067      protected $isPrivate = false;
 068   
 069      /**
 070       * @var bool
 071       */
 072      protected $isStatic = false;
 073   
 074      /**
 075       * @var string
 076       */
 077      protected $docComment;
 078   
 079      /**
 080       * @var string
 081       */
 082      protected $name;
 083   
 084      /**
 085       * @var string
 086       */
 087      protected $value;
 088   
 089      /**
 090       * @var string
 091       */
 092      protected $valueType;
 093   
 094      /**
 095       * Constructor
 096       *
 097       * @param array $propertyTokens
 098       * @param NameInformation $nameInformation
 099       */
 100      public function __construct(array $propertyTokens, NameInformation $nameInformation = null)
 101      {
 102          $this->tokens = $propertyTokens;
 103          $this->nameInformation = $nameInformation;
 104      }
 105   
 106      /**
 107       * @param string $class
 108       */
 109      public function setClass($class)
 110      {
 111          $this->class = $class;
 112      }
 113   
 114      /**
 115       * @param ClassScanner $scannerClass
 116       */
 117      public function setScannerClass(ClassScanner $scannerClass)
 118      {
 119          $this->scannerClass = $scannerClass;
 120      }
 121   
 122      /**
 123       * @return ClassScanner
 124       */
 125      public function getClassScanner()
 126      {
 127          return $this->scannerClass;
 128      }
 129   
 130      /**
 131       * @return string
 132       */
 133      public function getName()
 134      {
 135          $this->scan();
 136          return $this->name;
 137      }
 138   
 139      /**
 140       * @return string
 141       */
 142      public function getValueType()
 143      {
 144          return $this->valueType;
 145      }
 146   
 147      /**
 148       * @return bool
 149       */
 150      public function isPublic()
 151      {
 152          $this->scan();
 153          return $this->isPublic;
 154      }
 155   
 156      /**
 157       * @return bool
 158       */
 159      public function isPrivate()
 160      {
 161          $this->scan();
 162          return $this->isPrivate;
 163      }
 164   
 165      /**
 166       * @return bool
 167       */
 168      public function isProtected()
 169      {
 170          $this->scan();
 171          return $this->isProtected;
 172      }
 173   
 174      /**
 175       * @return bool
 176       */
 177      public function isStatic()
 178      {
 179          $this->scan();
 180          return $this->isStatic;
 181      }
 182   
 183      /**
 184       * @return string
 185       */
 186      public function getValue()
 187      {
 188          $this->scan();
 189          return $this->value;
 190      }
 191   
 192      /**
 193       * @return string
 194       */
 195      public function getDocComment()
 196      {
 197          $this->scan();
 198          return $this->docComment;
 199      }
 200   
 201      /**
 202       * @param Annotation\AnnotationManager $annotationManager
 203       * @return AnnotationScanner
 204       */
 205      public function getAnnotations(Annotation\AnnotationManager $annotationManager)
 206      {
 207          if (($docComment = $this->getDocComment()) == '') {
 208              return false;
 209          }
 210   
 211          return new AnnotationScanner($annotationManager, $docComment, $this->nameInformation);
 212      }
 213   
 214      /**
 215       * @return string
 216       */
 217      public function __toString()
 218      {
 219          $this->scan();
 220          return var_export($this, true);
 221      }
 222   
 223      /**
 224       * Scan tokens
 225       *
 226       * @throws \Zend\Code\Exception\RuntimeException
 227       */
 228      protected function scan()
 229      {
 230          if ($this->isScanned) {
 231              return;
 232          }
 233   
 234          if (!$this->tokens) {
 235              throw new Exception\RuntimeException('No tokens were provided');
 236          }
 237   
 238          /**
 239           * Variables & Setup
 240           */
 241          $value            = '';
 242          $concatenateValue = false;
 243   
 244          $tokens = &$this->tokens;
 245          reset($tokens);
 246   
 247          foreach ($tokens as $token) {
 248              $tempValue = $token;
 249              if (!is_string($token)) {
 250                  list($tokenType, $tokenContent, $tokenLine) = $token;
 251   
 252                  switch ($tokenType) {
 253                      case T_DOC_COMMENT:
 254                          if ($this->docComment === null && $this->name === null) {
 255                              $this->docComment = $tokenContent;
 256                          }
 257                          break;
 258   
 259                      case T_VARIABLE:
 260                          $this->name = ltrim($tokenContent, '$');
 261                          break;
 262   
 263                      case T_PUBLIC:
 264                          // use defaults
 265                          break;
 266   
 267                      case T_PROTECTED:
 268                          $this->isProtected = true;
 269                          $this->isPublic = false;
 270                          break;
 271   
 272                      case T_PRIVATE:
 273                          $this->isPrivate = true;
 274                          $this->isPublic = false;
 275                          break;
 276   
 277                      case T_STATIC:
 278                          $this->isStatic = true;
 279                          break;
 280                      default:
 281                          $tempValue = trim($tokenContent);
 282                          break;
 283                  }
 284              }
 285   
 286              //end value concatenation
 287              if (!is_array($token) && trim($token) == ";") {
 288                  $concatenateValue = false;
 289              }
 290   
 291              if (true === $concatenateValue) {
 292                  $value .= $tempValue;
 293              }
 294   
 295              //start value concatenation
 296              if (!is_array($token) && trim($token) == "=") {
 297                  $concatenateValue = true;
 298              }
 299          }
 300   
 301          $this->valueType = self::T_UNKNOWN;
 302          if ($value == "false" || $value == "true") {
 303              $this->valueType = self::T_BOOLEAN;
 304          } elseif (is_numeric($value)) {
 305              $this->valueType = self::T_INTEGER;
 306          } elseif (0 === strpos($value, 'array') || 0 === strpos($value, "[")) {
 307              $this->valueType = self::T_ARRAY;
 308          } elseif (substr($value, 0, 1) === '"' || substr($value, 0, 1) === "'") {
 309              $value = substr($value, 1, -1); // Remove quotes
 310              $this->valueType = self::T_STRING;
 311          }
 312   
 313          $this->value = empty($value) ? null : $value;
 314          $this->isScanned = true;
 315      }
 316  }
 317