Метод allPreserveCase класса HeaderBag
Метод allPreserveCase класса HeaderBag возвращает все заголовки в виде ассоциативного массива, в котором ключами являются имена заголовков в том регистре, в котором они были установлены. В отличие от метода all, который приводит имена заголовков к нижнему регистру, allPreserveCase сохраняет оригинальное написание ключей, что удобно, когда важно отдать заголовки клиенту в исходном виде.
Метод не принимает параметров и возвращает массив, где ключи - имена заголовков, а значения - массивы строк со значениями этих заголовков.
Синтаксис
public function allPreserveCase(): array
Пример
Давайте создадим объект HeaderBag, установим несколько заголовков и получим их через allPreserveCase:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHttpFoundationHeaderBag;
class ArticleController extends AbstractController
{
public function index(): Response
{
$bag = new HeaderBag();
$bag->set('Content-Type', 'text/html');
$bag->set('X-Custom-Header', 'abcde');
$res = $bag->allPreserveCase();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"Content-Type":["text/html"],"X-Custom-Header":["abcde"]}
Пример
Давайте сравним результат работы all и allPreserveCase для одного и того же набора заголовков:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHttpFoundationHeaderBag;
class ArticleController extends AbstractController
{
public function index(): Response
{
$bag = new HeaderBag();
$bag->set('Content-Type', 'text/html');
$bag->set('X-Custom-Header', 'hello');
$all = $bag->all();
$preserve = $bag->allPreserveCase();
return new Response(json_encode([
'all' => $all,
'preserve' => $preserve,
]));
}
}
?>
Результат выполнения кода:
{"all":{"content-type":["text/html"],"x-custom-header":["hello"]},"preserve":{"Content-Type":["text/html"],"X-Custom-Header":["hello"]}}
Пример
Давайте получим заголовки из HTTP-запроса, сохранив их исходный регистр:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(Request $request): Response
{
$res = $request->headers->allPreserveCase();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода для запроса с заголовком X-Custom-Header: abcde:
{"x-custom-header":["abcde"],"host":["localhost"],"user-agent":["Symfony"]}