РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
260 of 1361 menu

Класс Session

Класс Session представляет собой объект сессии, который хранит данные между запросами пользователя. Он реализует интерфейс SessionInterface и предоставляет методы для чтения, записи, удаления и проверки значений. Объект сессии доступен через сервис RequestStack или внедряется в контроллер как аргумент Request.

Синтаксис

$request->getSession()

Пример

Давайте получим объект сессии в контроллере и запишем в него значение по ключу 'user':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/session', name: 'article_session')] public function index(Request $request): Response { $session = $request->getSession(); $session->set('user', 'abcde'); return new Response('session saved'); } } ?>

Результат выполнения кода:

"session saved"

Пример

Давайте прочитаем значение из сессии по ключу 'user':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/session/read', name: 'article_session_read')] public function read(Request $request): Response { $session = $request->getSession(); $user = $session->get('user', 'default'); return new Response($user); } } ?>

Результат выполнения кода:

abcde

Пример

Давайте проверим наличие ключа 'user' в сессии и удалим его:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/session/check', name: 'article_session_check')] public function check(Request $request): Response { $session = $request->getSession(); if ($session->has('user')) { $session->remove('user'); return new Response('removed'); } return new Response('not found'); } } ?>

Результат выполнения кода:

removed

Пример

Давайте получим все данные сессии через метод all и очистим её методом clear:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/session/all', name: 'article_session_all')] public function all(Request $request): Response { $session = $request->getSession(); $session->set('user', 'abcde'); $session->set('role', 'admin'); $data = $session->all(); $session->clear(); return new Response(json_encode($data)); } } ?>

Результат выполнения кода:

{"user":"abcde","role":"admin"}

Смотрите также

  • метод set,
    который записывает значение в сессию
  • метод get,
    который читает значение из сессии
  • метод has,
    который проверяет наличие ключа в сессии
  • метод remove,
    который удаляет значение из сессии
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить