[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

/vendor/symfony/http-foundation/ -> AcceptHeaderItem.php (source)

   1  <?php
   2  
   3  /*
   4   * This file is part of the Symfony package.
   5   *
   6   * (c) Fabien Potencier <fabien@symfony.com>
   7   *
   8   * For the full copyright and license information, please view the LICENSE
   9   * file that was distributed with this source code.
  10   */
  11  
  12  namespace Symfony\Component\HttpFoundation;
  13  
  14  /**
  15   * Represents an Accept-* header item.
  16   *
  17   * @author Jean-François Simon <contact@jfsimon.fr>
  18   */
  19  class AcceptHeaderItem
  20  {
  21      private $value;
  22      private $quality = 1.0;
  23      private $index = 0;
  24      private $attributes = [];
  25  
  26      /**
  27       * @param string $value
  28       */
  29      public function __construct($value, array $attributes = [])
  30      {
  31          $this->value = $value;
  32          foreach ($attributes as $name => $value) {
  33              $this->setAttribute($name, $value);
  34          }
  35      }
  36  
  37      /**
  38       * Builds an AcceptHeaderInstance instance from a string.
  39       *
  40       * @param string $itemValue
  41       *
  42       * @return self
  43       */
  44      public static function fromString($itemValue)
  45      {
  46          $bits = preg_split('/\s*(?:;*("[^"]+");*|;*(\'[^\']+\');*|;+)\s*/', $itemValue, 0, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE);
  47          $value = array_shift($bits);
  48          $attributes = [];
  49  
  50          $lastNullAttribute = null;
  51          foreach ($bits as $bit) {
  52              if (($start = substr($bit, 0, 1)) === ($end = substr($bit, -1)) && ('"' === $start || '\'' === $start)) {
  53                  $attributes[$lastNullAttribute] = substr($bit, 1, -1);
  54              } elseif ('=' === $end) {
  55                  $lastNullAttribute = $bit = substr($bit, 0, -1);
  56                  $attributes[$bit] = null;
  57              } else {
  58                  $parts = explode('=', $bit);
  59                  $attributes[$parts[0]] = isset($parts[1]) && \strlen($parts[1]) > 0 ? $parts[1] : '';
  60              }
  61          }
  62  
  63          return new self(($start = substr($value, 0, 1)) === ($end = substr($value, -1)) && ('"' === $start || '\'' === $start) ? substr($value, 1, -1) : $value, $attributes);
  64      }
  65  
  66      /**
  67       * Returns header value's string representation.
  68       *
  69       * @return string
  70       */
  71      public function __toString()
  72      {
  73          $string = $this->value.($this->quality < 1 ? ';q='.$this->quality : '');
  74          if (\count($this->attributes) > 0) {
  75              $string .= ';'.implode(';', array_map(function ($name, $value) {
  76                  return sprintf(preg_match('/[,;=]/', $value) ? '%s="%s"' : '%s=%s', $name, $value);
  77              }, array_keys($this->attributes), $this->attributes));
  78          }
  79  
  80          return $string;
  81      }
  82  
  83      /**
  84       * Set the item value.
  85       *
  86       * @param string $value
  87       *
  88       * @return $this
  89       */
  90      public function setValue($value)
  91      {
  92          $this->value = $value;
  93  
  94          return $this;
  95      }
  96  
  97      /**
  98       * Returns the item value.
  99       *
 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  }


Generated: Mon Nov 25 19:05:08 2024 Cross-referenced by PHPXref 0.7.1