Компонент Symfony HttpFoundation обеспечивает управление файлами cookie и сеансами объектно-ориентированным способом. Cookie обеспечивает хранение данных на стороне клиента и поддерживает только небольшой объем данных. Обычно это 2 КБ на домен, и это зависит от браузера. Сеанс обеспечивает хранение данных на стороне сервера и поддерживает большое количество данных. Давайте посмотрим, как создать cookie и сеанс в веб-приложении Symfony.
печенье
Symfony предоставляет класс Cookie для создания элемента cookie. Давайте создадим цвет cookie, срок действия которого истекает через 24 часа со значением blue . Параметр конструктора класса cookie выглядит следующим образом.
- имя (тип: строка) — имя файла cookie
- значение (тип: строка) — значение cookie
- expire (тип: целое число / строка / дата / время) — информация об истечении срока действия
- путь (тип: строка) — путь к серверу, на котором доступен файл cookie
- домен (тип: строка) — адрес домена, в котором доступен файл cookie
- secure (type: boolean) — нужно ли передавать cookie в HTTPS-соединении
- httpOnly (тип: логическое значение) — доступен ли файл cookie только по протоколу HTTP
use Symfony\Component\HttpFoundation\Cookie; $cookie = new Cookie('color', 'green', strtotime('tomorrow'), '/', 'somedomain.com', true, true);
Symfony также предоставляет следующую возможность создания файлов cookie на основе строк.
$cookie = Cookie::fromString('color = green; expires = Web, 4-May-2017 18:00:00 +0100; path=/; domain = somedomain.com; secure; httponly');
Теперь созданный файл cookie необходимо прикрепить к заголовку объекта ответа http следующим образом.
$response->headers->setCookie($cookie);
Чтобы получить cookie, мы можем использовать объект запроса следующим образом.
$cookie = $request->cookie->get('color');
Здесь request-> cookie имеет тип PropertyBag, и мы можем манипулировать им, используя методы PropertyBag.
сессия
Symfony предоставляет класс Session, реализующий интерфейс SessionInterface. Важный сеанс API заключается в следующем,
start — запускает сеанс
Session $session = new Session(); $session->start();
invalidate — очищает все данные сеанса и восстанавливает идентификатор сеанса.
set — сохраняет данные в сеансе с помощью ключа.
$session->set('key', 'value');
Мы можем использовать любые данные в значении сеанса, быть простым целым числом для сложных объектов.
get — получает данные из сеанса, используя ключ.
$val = $session->get('key');
удалить — удаляет ключ из сеанса.
clear — удаляет данные сеанса
FlashBag
Сессия предоставляет еще одну полезную функцию под названием FlashBag . Это специальный контейнер внутри сессии, содержащий данные только во время перенаправления страницы. Это полезно в http перенаправлениях. Перед перенаправлением на страницу данные могут быть сохранены во FlashBag вместо обычного контейнера сеанса, и сохраненные данные будут доступны в следующем запросе (перенаправленная страница). Затем данные будут автоматически признаны недействительными.