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. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
AcceptHeaderItem.php
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