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); } }