Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

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

UriFactory.php

Zuletzt modifiziert: 09.10.2024, 12:59 - Dateigröße: 4.13 KiB


001  <?php
002  namespace OAuth\Common\Http\Uri;
003   
004  use RuntimeException;
005   
006  /**
007   * Factory class for uniform resource indicators
008   */
009  class UriFactory implements UriFactoryInterface
010  {
011      /**
012       * Factory method to build a URI from a super-global $_SERVER array.
013       * @param array $_server
014       * @return UriInterface
015       */
016      public function createFromSuperGlobalArray(array $_server)
017      {
018          if ($uri = $this->attemptProxyStyleParse($_server)) {
019              return $uri;
020          }
021   
022          $scheme = $this->detectScheme($_server);
023          $host = $this->detectHost($_server);
024          $port = $this->detectPort($_server);
025          $path = $this->detectPath($_server);
026          $query = $this->detectQuery($_server);
027   
028          return $this->createFromParts($scheme, '', $host, $port, $path, $query);
029      }
030   
031      /**
032       * @param string $absoluteUri
033       * @return UriInterface
034       */
035      public function createFromAbsolute($absoluteUri)
036      {
037          return new Uri($absoluteUri);
038      }
039   
040      /**
041       * Factory method to build a URI from parts
042       *
043       * @param string $scheme
044       * @param string $userInfo
045       * @param string $host
046       * @param string $port
047       * @param string $path
048       * @param string $query
049       * @param string $fragment
050       * @return UriInterface
051       */
052      public function createFromParts($scheme, $userInfo, $host, $port, $path = '', $query = '', $fragment = '')
053      {
054          $uri = new Uri();
055          $uri->setScheme($scheme);
056          $uri->setUserInfo($userInfo);
057          $uri->setHost($host);
058          $uri->setPort($port);
059          $uri->setPath($path);
060          $uri->setQuery($query);
061          $uri->setFragment($fragment);
062   
063          return $uri;
064      }
065   
066      /**
067       * @param array $_server
068       * @return UriInterface|null
069       */
070      private function attemptProxyStyleParse($_server)
071      {
072          // If the raw HTTP request message arrives with a proxy-style absolute URI in the
073          // initial request line, the absolute URI is stored in $_SERVER['REQUEST_URI'] and
074          // we only need to parse that.
075          if (isset($_server['REQUEST_URI']) && parse_url($_server['REQUEST_URI'], PHP_URL_SCHEME)) {
076              return new Uri($_server['REQUEST_URI']);
077          }
078   
079          return null;
080      }
081   
082      /**
083       * @param array $_server
084       * @return string
085       * @throws RuntimeException
086       */
087      private function detectPath($_server) {
088          if (isset($_server['REQUEST_URI'])) {
089              $uri = $_server['REQUEST_URI'];
090          } elseif (isset($_server['REDIRECT_URL'])) {
091              $uri = $_server['REDIRECT_URL'];
092          } else {
093              throw new RuntimeException("Could not detect URI path from superglobal");
094          }
095   
096          $queryStr = strpos($uri, '?');
097          if ($queryStr !== false) {
098              $uri = substr($uri, 0, $queryStr);
099          }
100   
101          return $uri;
102      }
103   
104      /**
105       * @param array $_server
106       * @return string
107       */
108      private function detectHost(array $_server) {
109          $host = isset($_server['HTTP_HOST']) ? $_server['HTTP_HOST'] : '';
110   
111          if (strstr($host, ':')) {
112              $host = parse_url($host, PHP_URL_HOST);
113          }
114   
115          return $host;
116      }
117   
118      /**
119       * @param array $_server
120       * @return string
121       */
122      private function detectPort(array $_server) {
123          return isset($_server['SERVER_PORT']) ? $_server['SERVER_PORT'] : 80;
124      }
125   
126      /**
127       * @param array $_server
128       * @return string
129       */
130      private function detectQuery(array $_server) {
131          return isset($_server['QUERY_STRING']) ? $_server['QUERY_STRING'] : '';
132      }
133   
134      /**
135       * Determine URI scheme component from superglobal array
136       *
137       * When using ISAPI with IIS, the value will be "off" if the request was
138       * not made through the HTTPS protocol. As a result, we filter the
139       * value to a bool.
140       *
141       * @param array $_server A super-global $_SERVER array
142       *
143       * @return string Returns http or https depending on the URI scheme
144       */
145      private function detectScheme(array $_server) {
146          if (isset($_server['HTTPS'])
147              && filter_var($_server['HTTPS'], FILTER_VALIDATE_BOOLEAN)
148          ) {
149              return 'https';
150          } else {
151              return 'http';
152          }
153      }
154  }
155