index/src/Http/Headers/CacheControlHeader.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);
}
}