Verzeichnisstruktur phpBB-3.3.15


Veröffentlicht
28.08.2024

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

AcceptHeaderItem.php

Zuletzt modifiziert: 02.04.2025, 15:02 - Dateigröße: 4.54 KiB


001  <?php
002   
003  /*
004   * This file is part of the Symfony package.
005   *
006   * (c) Fabien Potencier <fabien@symfony.com>
007   *
008   * For the full copyright and license information, please view the LICENSE
009   * file that was distributed with this source code.
010   */
011   
012  namespace Symfony\Component\HttpFoundation;
013   
014  /**
015   * Represents an Accept-* header item.
016   *
017   * @author Jean-François Simon <contact@jfsimon.fr>
018   */
019  class AcceptHeaderItem
020  {
021      private $value;
022      private $quality = 1.0;
023      private $index = 0;
024      private $attributes = [];
025   
026      /**
027       * @param string $value
028       */
029      public function __construct($value, array $attributes = [])
030      {
031          $this->value = $value;
032          foreach ($attributes as $name => $value) {
033              $this->setAttribute($name, $value);
034          }
035      }
036   
037      /**
038       * Builds an AcceptHeaderInstance instance from a string.
039       *
040       * @param string $itemValue
041       *
042       * @return self
043       */
044      public static function fromString($itemValue)
045      {
046          $bits = preg_split('/\s*(?:;*("[^"]+");*|;*(\'[^\']+\');*|;+)\s*/', $itemValue, 0, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE);
047          $value = array_shift($bits);
048          $attributes = [];
049   
050          $lastNullAttribute = null;
051          foreach ($bits as $bit) {
052              if (($start = substr($bit, 0, 1)) === ($end = substr($bit, -1)) && ('"' === $start || '\'' === $start)) {
053                  $attributes[$lastNullAttribute] = substr($bit, 1, -1);
054              } elseif ('=' === $end) {
055                  $lastNullAttribute = $bit = substr($bit, 0, -1);
056                  $attributes[$bit] = null;
057              } else {
058                  $parts = explode('=', $bit);
059                  $attributes[$parts[0]] = isset($parts[1]) && \strlen($parts[1]) > 0 ? $parts[1] : '';
060              }
061          }
062   
063          return new self(($start = substr($value, 0, 1)) === ($end = substr($value, -1)) && ('"' === $start || '\'' === $start) ? substr($value, 1, -1) : $value, $attributes);
064      }
065   
066      /**
067       * Returns header value's string representation.
068       *
069       * @return string
070       */
071      public function __toString()
072      {
073          $string = $this->value.($this->quality < 1 ? ';q='.$this->quality : '');
074          if (\count($this->attributes) > 0) {
075              $string .= ';'.implode(';', array_map(function ($name, $value) {
076                  return sprintf(preg_match('/[,;=]/', $value) ? '%s="%s"' : '%s=%s', $name, $value);
077              }, array_keys($this->attributes), $this->attributes));
078          }
079   
080          return $string;
081      }
082   
083      /**
084       * Set the item value.
085       *
086       * @param string $value
087       *
088       * @return $this
089       */
090      public function setValue($value)
091      {
092          $this->value = $value;
093   
094          return $this;
095      }
096   
097      /**
098       * Returns the item value.
099       *
100       * @return string
101       */
102      public function getValue()
103      {
104          return $this->value;
105      }
106   
107      /**
108       * Set the item quality.
109       *
110       * @param float $quality
111       *
112       * @return $this
113       */
114      public function setQuality($quality)
115      {
116          $this->quality = $quality;
117   
118          return $this;
119      }
120   
121      /**
122       * Returns the item quality.
123       *
124       * @return float
125       */
126      public function getQuality()
127      {
128          return $this->quality;
129      }
130   
131      /**
132       * Set the item index.
133       *
134       * @param int $index
135       *
136       * @return $this
137       */
138      public function setIndex($index)
139      {
140          $this->index = $index;
141   
142          return $this;
143      }
144   
145      /**
146       * Returns the item index.
147       *
148       * @return int
149       */
150      public function getIndex()
151      {
152          return $this->index;
153      }
154   
155      /**
156       * Tests if an attribute exists.
157       *
158       * @param string $name
159       *
160       * @return bool
161       */
162      public function hasAttribute($name)
163      {
164          return isset($this->attributes[$name]);
165      }
166   
167      /**
168       * Returns an attribute by its name.
169       *
170       * @param string $name
171       * @param mixed  $default
172       *
173       * @return mixed
174       */
175      public function getAttribute($name, $default = null)
176      {
177          return isset($this->attributes[$name]) ? $this->attributes[$name] : $default;
178      }
179   
180      /**
181       * Returns all attributes.
182       *
183       * @return array
184       */
185      public function getAttributes()
186      {
187          return $this->attributes;
188      }
189   
190      /**
191       * Set an attribute.
192       *
193       * @param string $name
194       * @param string $value
195       *
196       * @return $this
197       */
198      public function setAttribute($name, $value)
199      {
200          if ('q' === $name) {
201              $this->quality = (float) $value;
202          } else {
203              $this->attributes[$name] = (string) $value;
204          }
205   
206          return $this;
207      }
208  }
209