Verzeichnisstruktur phpBB-3.3.16


Veröffentlicht
27.04.2026

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: 01.05.2026, 11:26 - 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