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

NameInformation.php

Zuletzt modifiziert: 09.10.2024, 12:55 - Dateigröße: 3.59 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;
011   
012  class NameInformation
013  {
014      /**
015       * @var string
016       */
017      protected $namespace = null;
018   
019      /**
020       * @var array
021       */
022      protected $uses = array();
023   
024      /**
025       * @param  string $namespace
026       * @param  array $uses
027       */
028      public function __construct($namespace = null, array $uses = array())
029      {
030          if ($namespace) {
031              $this->setNamespace($namespace);
032          }
033          if ($uses) {
034              $this->setUses($uses);
035          }
036      }
037   
038      /**
039       * @param  string $namespace
040       * @return NameInformation
041       */
042      public function setNamespace($namespace)
043      {
044          $this->namespace = (string) $namespace;
045          return $this;
046      }
047   
048      /**
049       * @return string
050       */
051      public function getNamespace()
052      {
053          return $this->namespace;
054      }
055   
056      /**
057       * @return bool
058       */
059      public function hasNamespace()
060      {
061          return ($this->namespace !== null);
062      }
063   
064      /**
065       * @param  array $uses
066       * @return NameInformation
067       */
068      public function setUses(array $uses)
069      {
070          $this->uses = array();
071          $this->addUses($uses);
072   
073          return $this;
074      }
075   
076      /**
077       * @param  array $uses
078       * @return NameInformation
079       */
080      public function addUses(array $uses)
081      {
082          foreach ($uses as $use => $as) {
083              if (is_int($use)) {
084                  $this->addUse($as);
085              } elseif (is_string($use)) {
086                  $this->addUse($use, $as);
087              }
088          }
089   
090          return $this;
091      }
092   
093      /**
094       * @param  array|string $use
095       * @param  string $as
096       */
097      public function addUse($use, $as = null)
098      {
099          if (is_array($use) && array_key_exists('use', $use) && array_key_exists('as', $use)) {
100              $uses = $use;
101              $use  = $uses['use'];
102              $as   = $uses['as'];
103          }
104   
105          $use = trim($use, '\\');
106          if ($as === null) {
107              $as                  = trim($use, '\\');
108              $nsSeparatorPosition = strrpos($as, '\\');
109              if ($nsSeparatorPosition !== false && $nsSeparatorPosition !== 0 && $nsSeparatorPosition != strlen($as)) {
110                  $as = substr($as, $nsSeparatorPosition + 1);
111              }
112          }
113   
114          $this->uses[$use] = $as;
115      }
116   
117      /**
118       * @return array
119       */
120      public function getUses()
121      {
122          return $this->uses;
123      }
124   
125      /**
126       * @param  string $name
127       * @return string
128       */
129      public function resolveName($name)
130      {
131          if ($this->namespace && !$this->uses && strlen($name) > 0 && $name{0} != '\\') {
132              return $this->namespace . '\\' . $name;
133          }
134   
135          if (!$this->uses || strlen($name) <= 0 || $name{0} == '\\') {
136              return ltrim($name, '\\');
137          }
138   
139          if ($this->namespace || $this->uses) {
140              $firstPart = $name;
141              if (($firstPartEnd = strpos($firstPart, '\\')) !== false) {
142                  $firstPart = substr($firstPart, 0, $firstPartEnd);
143              } else {
144                  $firstPartEnd = strlen($firstPart);
145              }
146              if (($fqns = array_search($firstPart, $this->uses)) !== false) {
147                  return substr_replace($name, $fqns, 0, $firstPartEnd);
148              }
149              if ($this->namespace) {
150                  return $this->namespace . '\\' . $name;
151              }
152          }
153   
154          return $name;
155      }
156  }
157