Сессии в Laravel

В Laravel можно работать с сессиями пользователей с помощью двух инструментов. Первый - это класс Request, второй - глобальная вспомогательная функция session. Рассмотрим их.

Глобальная функция session

Глобальная функция session имеет меньше возможностей, чем методы класса Request. В основном они ограничиваются только получением и сохранением данных. Данные в сессии хранятся в виде ассоциативного массива. Доступ к ним происходит по ключу:
<?php 
   // сохранить данные в сессию:
   session(['food' => 'cheese']);
	
   // получить данные из сессии:
   $value = session('food');

   // при получении указать значение по умолчанию:
   $value = session('food', 'milk');
?>
При указании второго параметра во время получения значение (по умолчанию), он будет возвращаться, если значения нет.

Методы для сессий из класса Request

В классе Request существует метод session(). Он возвращает объект с сессией. Рассмотрим несколько методов, которые можно применять к этому объекту. К примеру, чтобы сохранить данные сессии, необходимо использовать метод put, а для получения метод get:
<?php 
   // сохранить данные в сессию:
   $request->session()->put('food', 'cheese');
	
   // получить данные из сессии:
   $value = $request->session()->get('food');

   // при получении указать значение по умолчанию:
   $value = $request->session()->get('food', 'milk');
?>
Вместо значения по умолчанию (константы) можно поставить и функцию. Тогда она будет выполнена, если переменной сессии ещё не существует:
<?php 
   $value = $request->session()->get('food', function(){
      return 'milk';
   });
?>
Для работы с массивами внутри данных сессии существует метод push(). Он добавляет новый элемент массив:
<?php 
   // сохранить массив в сессию:
   $request->session()->put('food', array('cheese', 'bread'));
	
   // добавляем элемент в массив:
   $value = $request->session()->push('food', 'milk');
?>
Для удаления данных из сессии используются методы:
  • forget() - удаляет данные по ключу
  • pull() - удаляет данные по ключу и возвращает удаляемое значение (вторым параметром можно передать значение по умолчанию)
  • flush() - удаляет вообще все данные сессии
Приведём примеры их вызова:
<?php 
   // удаляет данные по ключу "food":
   $request->session()->forget('food');
	
   // удаляет данные по ключу "food", возвращая сохранённые или "milk":
   $value = $request->session()->pull('food', 'milk');

   // удаляет вообще все данные сессии:
   $value = $request->session()->flush();
?>
Последними рассмотрим три метода для получения значения из сессии, проверки существования и проверки наличия:
  • all() - получает все данные из сессии
  • exists() - вернет true, если переменная существует
  • has() - вернет true, если переменная существует и не равна null
Методы проверки обычно используют в условных конструкциях:
<?php 
   // получает все данные сессии
   $data = $request->session()->all();

   if ($request-?>session()-?>exists('food')) {
      // этот код выполнится, если "food" существует
   }
	
   if ($request-?>session()-?>has('food')) {
      // этот код выполнится, если "food" существует и не равна null
   }
?>
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб