мое новое расписание: пн-пт с 8.00 по 16.00 по москве, сб и вс - выходные; после 16.00 и на вых. отвечаю по возможности

Работа с сессиями в Laravel

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

В начале давайте изучим работу с сессиями через Request, так как данный способ является более мощным и предоставляет больше возможностей.

Напомню, что, чтобы использовать объект класса Request, необходимо подключить класс через use и выполнить инъекцию зависимостей:

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; // подключаем класс Request class TestController extends Controller { public function show(Request $request) // выполняем инъекцию { } } ?>

Работа с сессиями через Request

Для обращения к сессии следует вызвать метод session:

<?php $request->session(); ?>

Данный метод возвращает объект с сессией, после чего можно будет использовать методы этого объекта:

<?php $request->session()->метод(); ?>

Изучением доступных методов мы и займемся далее.

Установка и получение переменных сессии

Для установки переменной сессии используется метод put:

<?php $request->session()->put('key', 'value'); ?>

Для получения переменной сессии используется метод get:

<?php $value = $request->session()->get('key'); ?>

В одном действии контроллера установите какое-нибудь значение в сессию, а во втором - получите его.

Используя сессии, выведите в каком-нибудь представлении счетчик, показывающий количество обновлений страницы.

Значения по умолчанию

При получении значения из сессии, вы можете передать значение по умолчанию вторым параметром метода get. Это значение будет возвращено, если указанного ключа нет в сессии:

<?php $value = $request->session()->get('key', 'default'); ?>

Такое может пригодится, например, для создания счетчика обновления страницы. Как работает такой счетчик: при первом заходе на страницу он должен получить значение 1, а при последующих заходах - увеличивать свое значение на единицу.

Удобно в этом случае использовать значение по умолчанию, чтобы при первом заходе установить значение счетчика в 1:

<?php $value = $request->session()->get('counter', 1); echo $value; // Увеличим счетчик на 1: $request->session()->put('counter', $value + 1); ?>

Описанным выше способом реализуйте счетчик обновления страницы.

Запишите в сессию время первого захода пользователя на страницу. При обновлении страницы (и при первом заходе тоже) выводите это время на экран.

Значения по умолчанию

Значением по умолчанию также может служить анонимная функция, которая выполнится, если запрашиваемой переменной сессии не существует:

<?php $value = $request->session()->get('key', function() { return 'default'; }); ?>

Это может пригодится в том случае, когда вам нужно выполнить какой-то PHP код в случае, если значение сессии пока не задано.

Запись данных в массивы сессии

Пусть в какой-то переменной сессии записан массив:

<?php $request->session()->put('arr', ['a', 'b', 'c']); ?>

Существует специальный метод

push, позволяющий добавлять новые элементы в переменные сессии, являющиеся массивами.

Давайте с его помощью добавим новый элемент со значением 'd':

<?php $request->session()->push('arr', 'd'); ?>

Пусть в переменной сессии записан массив с числами. Используя метод

push добавьте к этому массиву еще одно число.

Удаление элемента

Метод forget удаляет определенную переменную из сессии. Давайте, например, удалим переменную с ключом key:

<?php $request->session()->forget('key'); ?>

Удалите какую-нибудь переменную из сессии.

Чтение и удаление элемента

Метод pull прочитывает и удаляет элемент из сессии за одно действие:

<?php $value = $request->session()->pull('key', 'default'); ?>

Как вы видите, второй необязательный параметр метода pull задает значение по умолчанию для прочитываемого элемента.

Сделайте два действия в контроллере. В первом действии установите какую-нибудь переменную сессии, а во втором действии выведите значение этой переменной на экран (передав ее в представление), а затем удалите переменную из сессии.

Удаление всех данных

Метод flush удаляет все данные из сессии:

<?php $request->session()->flush(); ?>

Очистите вашу сессию от заданных переменных.

Получение всех данных сессии

Метод all получает все данные из сессии:

<?php $data = $request->session()->all(); ?>

Установите несколько переменных сессии. Получите эти установленные переменные в виде массива.

Определение наличия элемента в сессии

Метод has используется для проверки существования переменной сессии: Этот метод вернет true, если переменная существует и не равна null:

<?php if ($request->session()->has('key')) { } ?>

Проверьте, существует ли в сессии переменная test. Если существует - выведите на экран ее значение, а если не существует - установите ее значение в текущий момент времени.

Проверка существования

Для проверки существования переменной сессии, даже если она равна null, можно использовать метод exists. Этот метод вернет true, если переменная существует:

<?php if ($request->session()->exists('key')) { } ?>

Глобальная вспомогательная функция session

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

<?php // Сохранить данные в сессию: session(['key' => 'value']); // Получить данные из сессии: $value = session('key'); // При получении указать значение по умолчанию: $value = session('key', 'default'); ?>

С помощью функции session сохраните какие-нибудь данные в сессию.

С помощью функции session получите сохраненные данные из сессии.