Сессии 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.
