48 lines
1.2 KiB
PHP
48 lines
1.2 KiB
PHP
<?php
|
|
// CookieHeader.php
|
|
// Created: 2022-02-14
|
|
// Updated: 2022-02-27
|
|
|
|
namespace Index\Http\Headers;
|
|
|
|
use Index\UrlEncoding;
|
|
use Index\Http\HttpHeader;
|
|
|
|
class CookieHeader {
|
|
private array $cookies;
|
|
|
|
public function __construct(array $cookies) {
|
|
$this->cookies = $cookies;
|
|
}
|
|
|
|
public function getCookies(): array {
|
|
return $this->cookies;
|
|
}
|
|
|
|
public function hasCookie(string $name): bool {
|
|
return isset($this->cookies[$name]);
|
|
}
|
|
|
|
public function getCookie(string $name, int $filter = FILTER_DEFAULT, array|int $options = 0): mixed {
|
|
if(!isset($this->cookies[$name]))
|
|
return null;
|
|
return filter_var($this->cookies[$name] ?? null, $filter, $options);
|
|
}
|
|
|
|
public static function parse(HttpHeader $header): CookieHeader {
|
|
$cookies = [];
|
|
$lines = $header->getLines();
|
|
|
|
foreach($lines as $line) {
|
|
$parts = explode(';', $line);
|
|
|
|
foreach($parts as $part) {
|
|
$kvp = explode('=', $part, 2);
|
|
$cookies[rawurldecode($kvp[0])] = rawurldecode($kvp[1] ?? '');
|
|
}
|
|
}
|
|
|
|
return new CookieHeader($cookies);
|
|
}
|
|
}
|