48 lines
1.2 KiB
PHP
48 lines
1.2 KiB
PHP
<?php
|
|
// CacheControlHeader.php
|
|
// Created: 2022-02-14
|
|
// Updated: 2022-02-27
|
|
|
|
namespace Index\Http\Headers;
|
|
|
|
use Index\Http\HttpHeader;
|
|
|
|
class CacheControlHeader {
|
|
private array $params;
|
|
|
|
public function __construct(array $params) {
|
|
$this->params = $params;
|
|
}
|
|
|
|
public function getParams(): array {
|
|
return $this->params;
|
|
}
|
|
|
|
public function hasParam(string $name): bool {
|
|
return isset($this->params[strtolower($name)]);
|
|
}
|
|
|
|
public function getParam(string $name, int $filter = FILTER_DEFAULT, array|int $options = 0): mixed {
|
|
$name = strtolower($name);
|
|
if(!isset($this->params[$name]))
|
|
return null;
|
|
return filter_var($this->params[$name] ?? null, $filter, $options);
|
|
}
|
|
|
|
public static function parse(HttpHeader $header): CacheControlHeader {
|
|
$raw = explode(',', strtolower($header->getFirstLine()));
|
|
$params = [];
|
|
|
|
foreach($raw as $param) {
|
|
$parts = explode('=', $param, 2);
|
|
$name = trim($parts[0]);
|
|
$value = trim($parts[1] ?? '');
|
|
if($value === '')
|
|
$value = true;
|
|
$params[$name] = $value;
|
|
}
|
|
|
|
return new CacheControlHeader($params);
|
|
}
|
|
}
|