Метод getDate класса HeaderBag
Метод getDate класса HeaderBag
извлекает значение HTTP-заголовка и преобразует
его в объект DateTimeImmutable. Первым
параметром передаётся имя заголовка, вторым -
значение по умолчанию, которое вернётся, если
заголовок отсутствует. Метод удобен для работы
с заголовками Date, Expires,
Last-Modified и им подобными.
Синтаксис
public function getDate(string $key, ?\DateTimeInterface $default = null): ?\DateTimeInterface
Пример
Давайте создадим объект HeaderBag с заголовком
Date и извлечём из него дату:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\HeaderBag;
class ArticleController extends AbstractController
{
public function index(): Response
{
$bag = new HeaderBag([
'Date' => 'Wed, 21 Oct 2026 07:28:00 GMT',
]);
$date = $bag->getDate('Date');
return new Response($date->format('Y-m-d H:i:s'));
}
}
?>
Результат выполнения кода:
"2026-10-21 07:28:00"
Пример
Давайте передадим второй параметр - значение по умолчанию, которое вернётся, если заголовка нет:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\HeaderBag;
class ArticleController extends AbstractController
{
public function index(): Response
{
$bag = new HeaderBag([
'Content-Type' => 'text/html',
]);
$default = new \DateTimeImmutable('2026-01-01 00:00:00');
$date = $bag->getDate('Expires', $default);
return new Response($date->format('Y-m-d H:i:s'));
}
}
?>
Результат выполнения кода:
"2026-01-01 00:00:00"
Пример
Давайте извлечём дату из заголовка запроса
If-Modified-Since:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ArticleController extends AbstractController
{
public function index(Request $request): Response
{
$date = $request->headers->getDate('If-Modified-Since');
if ($date === null) {
return new Response('"no date"');
}
return new Response($date->format('Y-m-d'));
}
}
?>
Результат выполнения кода при отсутствии заголовка:
"no date"