Сессии Laravel играют важную роль в любом веб-приложении, они помогают нам сохранять данные сессий, которые можно извлечь в приложения.
В этой статье мы рассмотрим, как можно использовать хелперы сессий. Laravel Session предоставляют множество различных форматов для хранения данных, включая файлы, куки, базу данных, Redis и Memcached.
Что такое сессия?
Сессия — это простой способ хранения данных для каждого HTTP-запроса с уникальным идентификатором.
Сессия может предоставить данные об активности пользователя в приложении. Обычно сессии отправляются в браузер через куки с уникальным идентификатором, который можно использовать для получения данных сессии.
Поддерживаемые сессионные драйвера
Дефолтный драйвер для сессий — file. Он хорош для локальной разработки, но для продакшн-сервера, для повышения производительности, лучше использовать Redis или Memcached.
Вы можете изменить настройки драйвера в файла config/session.php
.
/* |-------------------------------------------------------------------------- | Дефолтный Драйвер Сессии |-------------------------------------------------------------------------- | | Данная опция управляет дефолтным «драйвером» сессий, | который будет использоваться при запросах. | По умолчанию мы будем использовать легковесный нативный драйвер, | но вы можете указать любой, из указанных здесь, замечательных драйверов. | | Поддерживается: "file", "cookie", "database", "apc", | "memcached", "redis", "dynamodb", "array" | */ 'driver' => env('SESSION_DRIVER', 'file'),
Использование Сессий Laravel для хранения данных
Во фреймворке Laravel есть два разных метода, которые можно использовать для задания переменных в сессии. Первый использует хедпер-функцию session()
.
// Глобальная хелпер-функция session(['key' => 'value']);
Во-вторых, вы можете использовать экземпляр Request
// Экземпляр класса Request $request->session()->put(['key' => 'value']);
Добавление значения в массив сессии
Метод push()
экземпляра Request
используется для добавления нового значения в массив сессии.
// Экземпляр класса Request $request->session()->push(['key' => 'value']);
Получение данных сессии
Есть несколько цепочных методов, доступных для session()
.
Получение значения сессии по ключу
Аналогично сохранению значения сессии, существует два разных способа его получения.
Первый метод использует метод session()
// Глобальная хелпер-функция $value = session('key');
Второй метод заключается в использовании экземпляра Request
:
// Экземпляр класса Request $value = $request->session()->get('key');
Получение всех значений сессии
Чтобы получить все значения сессии, используйте метод all()
экземпляра Request
, как показано ниже.
// Получить все значения сессии $values = $request->session()->all();
Проверка наличия значения сессии
Метод has()
можно использовать для определения, существует ли значение в сессии. Он вернет true
если значение существует, и null
если значение не существует.
// Проверка существования значения сессии if ($request->session()->has('key') { // }
Регенерация идентификаторов сессии
Если вы хотите перегенерировать все идентификаторы для сессии, то вы можете использовать метод regenerate()
.
// Перегенерация сессионных ID $request->session()->regenerate();
Удаление значений сессии
Используйте метод forget()
для удаления указанного значения по ключу из сессии.
// Удалить элемент из сессии $request->session()->forget('key');
Чтобы удалить все элементы из сессии, можно использовать метод flush()
.
// Удаление всех значений из сессии $request->session()->flush();
Выводы
Сессии очень важны для любого веб-приложения, почти все веб-фреймворки предоставляют этот функционал «из коробки». В этой статье мы постарались охватить все варианты использования Сессий Laravel.
Автор: Larashout
Перевод: Алексей Широков
Наш Телеграм-канал — следите за новостями о Laravel.