Bicycle/System/Classes/HTTP/Header.php
Egor Isaev b65603b4d0 dev
2026-06-23 10:44:18 +03:00

58 lines
1.4 KiB
PHP

<?php
/**
* @package Bicycle
* @author Egor Isaev
* @description HTTP/Header.php
* @copyright (c) 04/06/2026
*/
namespace System\Classes\HTTP;
use ArrayObject;
/**
* Коллекция HTTP-заголовков. Умеет отдавать себя в RFC-формате и отправлять.
*/
class Header extends ArrayObject
{
/**
* @param array $input Ассоциативный массив заголовков
*/
public function __construct(array $input = [])
{
parent::__construct($input);
}
/**
* Сериализует заголовки в RFC-формат (key: value, разделённые CRLF).
*
* @return string
*/
public function __toString(): string
{
$output = '';
foreach ($this as $key => $value) {
$output .= $key . ': ' . (is_array($value) ? implode(', ', $value) : $value) . "\r\n";
}
return $output . "\r\n";
}
/**
* Отправляет заголовки клиенту, если они ещё не отправлены.
*
* @return void
*/
public function send(): void
{
if (headers_sent()) {
return;
}
foreach ($this as $key => $value) {
header($key . ': ' . (is_array($value) ? implode(', ', $value) : $value));
}
}
}