class AcceptHeader in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/symfony/http-foundation/AcceptHeader.php \Symfony\Component\HttpFoundation\AcceptHeader
Represents an Accept-* header.
An accept header is compound with a list of items, sorted by descending quality.
@author Jean-François Simon <contact@jfsimon.fr>
Hierarchy
- class \Symfony\Component\HttpFoundation\AcceptHeader
Expanded class hierarchy of AcceptHeader
1 file declares its use of AcceptHeader
- AcceptHeaderTest.php in vendor/
symfony/ http-foundation/ Tests/ AcceptHeaderTest.php
File
- vendor/
symfony/ http-foundation/ AcceptHeader.php, line 22
Namespace
Symfony\Component\HttpFoundationView source
class AcceptHeader {
/**
* @var AcceptHeaderItem[]
*/
private $items = array();
/**
* @var bool
*/
private $sorted = true;
/**
* Constructor.
*
* @param AcceptHeaderItem[] $items
*/
public function __construct(array $items) {
foreach ($items as $item) {
$this
->add($item);
}
}
/**
* Builds an AcceptHeader instance from a string.
*
* @param string $headerValue
*
* @return AcceptHeader
*/
public static function fromString($headerValue) {
$index = 0;
return new self(array_map(function ($itemValue) use (&$index) {
$item = AcceptHeaderItem::fromString($itemValue);
$item
->setIndex($index++);
return $item;
}, preg_split('/\\s*(?:,*("[^"]+"),*|,*(\'[^\']+\'),*|,+)\\s*/', $headerValue, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE)));
}
/**
* Returns header value's string representation.
*
* @return string
*/
public function __toString() {
return implode(',', $this->items);
}
/**
* Tests if header has given value.
*
* @param string $value
*
* @return bool
*/
public function has($value) {
return isset($this->items[$value]);
}
/**
* Returns given value's item, if exists.
*
* @param string $value
*
* @return AcceptHeaderItem|null
*/
public function get($value) {
return isset($this->items[$value]) ? $this->items[$value] : null;
}
/**
* Adds an item.
*
* @param AcceptHeaderItem $item
*
* @return AcceptHeader
*/
public function add(AcceptHeaderItem $item) {
$this->items[$item
->getValue()] = $item;
$this->sorted = false;
return $this;
}
/**
* Returns all items.
*
* @return AcceptHeaderItem[]
*/
public function all() {
$this
->sort();
return $this->items;
}
/**
* Filters items on their value using given regex.
*
* @param string $pattern
*
* @return AcceptHeader
*/
public function filter($pattern) {
return new self(array_filter($this->items, function (AcceptHeaderItem $item) use ($pattern) {
return preg_match($pattern, $item
->getValue());
}));
}
/**
* Returns first item.
*
* @return AcceptHeaderItem|null
*/
public function first() {
$this
->sort();
return !empty($this->items) ? reset($this->items) : null;
}
/**
* Sorts items by descending quality.
*/
private function sort() {
if (!$this->sorted) {
uasort($this->items, function ($a, $b) {
$qA = $a
->getQuality();
$qB = $b
->getQuality();
if ($qA === $qB) {
return $a
->getIndex() > $b
->getIndex() ? 1 : -1;
}
return $qA > $qB ? -1 : 1;
});
$this->sorted = true;
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AcceptHeader:: |
private | property | ||
AcceptHeader:: |
private | property | ||
AcceptHeader:: |
public | function | Adds an item. | |
AcceptHeader:: |
public | function | Returns all items. | |
AcceptHeader:: |
public | function | Filters items on their value using given regex. | |
AcceptHeader:: |
public | function | Returns first item. | |
AcceptHeader:: |
public static | function | Builds an AcceptHeader instance from a string. | |
AcceptHeader:: |
public | function | Returns given value's item, if exists. | |
AcceptHeader:: |
public | function | Tests if header has given value. | |
AcceptHeader:: |
private | function | Sorts items by descending quality. | |
AcceptHeader:: |
public | function | Constructor. | |
AcceptHeader:: |
public | function | Returns header value's string representation. |