isLocked) { return false; } $key = \strtolower($key); if (!$overwrite && isset($this->header[$key])) { return false; } unset($this->header[$key]); if (!isset($this->header[$key])) { $this->header[$key] = []; } $this->header[$key][] = $header; return true; } /** * {@inheritdoc} */ public function getProtocolVersion() : string { return self::VERSION; } /** * Remove header by ID. * * @param string $key Header key * * @return bool * * @since 1.0.0 */ public function remove(string $key) : bool { if ($this->isLocked) { return false; } if (isset($this->header[$key])) { unset($this->header[$key]); return true; } return false; } /** * {@inheritdoc} */ public function getReasonPhrase() : string { $phrases = $this->get('Status'); return empty($phrases) ? '' : $phrases[0]; } /** * Get header by name. * * @param null|string $key Header key * * @return array * * @since 1.0.0 */ public function get(string $key = null) : array { return $key === null ? $this->header : ($this->header[\strtolower($key)] ?? []); } /** * Check if header is defined. * * @param string $key Header key * * @return bool * * @since 1.0.0 */ public function has(string $key) : bool { return isset($this->header[$key]); } /** * {@inheritdoc} */ public function generate(int $code) : void { switch ($code) { default: $this->generate500(); } } /** * Generate predefined header. * * @return void * * @since 1.0.0 */ private function generate500() : void { } }