[ Index ] |
PHP Cross Reference of phpBB-3.3.14-deutsch |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |