Класс Session
Класс Session используется для управления данными сессии в приложении Laravel. Он предоставляет методы для сохранения, получения, удаления и проверки наличия значений в сессии. Класс доступен через фасад Session или через хелпер session. Основные операции включают запись данных с помощью put, чтение через get, удаление через forget и проверку существования через has.
Синтаксис
<?php
// Через фасад
use Illuminate\Support\Facades\Session;
Session::put($key, $value);
$value = Session::get($key, $default);
// Через хелпер
session()->put($key, $value);
$value = session($key, $default);
?>
Пример
Давайте сохраним данные пользователя в сессии и извлечём их:
<?php
namespace AppHttpControllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
class UserController extends Controller
{
public function store(Request $request)
{
Session::put('user_id', $request->user_id);
Session::put('user_name', $request->user_name);
$res = Session::get('user_name');
echo $res;
}
}
?>
Результат выполнения кода:
"John Doe"
Пример
Давайте проверим наличие значения в сессии перед его извлечением:
<?php
namespace AppHttpControllers;
use Illuminate\Support\Facades\Session;
class DashboardController extends Controller
{
public function index()
{
if (Session::has('user_id')) {
$userId = Session::get('user_id');
$res = "User ID found: " . $userId;
} else {
$res = "User ID not found in session";
}
echo $res;
}
}
?>
Результат выполнения кода:
"User ID found: 5"
Пример
Давайте сохраним массив данных и добавим новый элемент в него:
<?php
namespace AppHttpControllers;
use Illuminate\Support\Facades\Session;
class CartController extends Controller
{
public function addItem()
{
// Сохраняем массив товаров
Session::put('cart', ['item_1', 'item_2']);
// Добавляем новый товар
Session::push('cart', 'item_3');
$res = Session::get('cart');
echo $res;
}
}
?>
Результат выполнения кода:
["item_1", "item_2", "item_3"]
Пример
Давайте извлечём и удалим значение из сессии за один вызов:
<?php
namespace AppHttpControllers;
use Illuminate\Support\Facades\Session;
class AuthController extends Controller
{
public function logout()
{
// Извлекаем и удаляем токен
$token = Session::pull('auth_token');
$res = "Removed token: " . $token;
echo $res;
}
}
?>
Результат выполнения кода:
"Removed token: abc123xyz"
Пример
Давайте сохраним flash-данные, которые доступны только для одного запроса:
<?php
namespace AppHttpControllers;
use Illuminate\Support\Facades\Session;
class MessageController extends Controller
{
public function setMessage()
{
Session::flash('success', 'Operation completed successfully');
$res = Session::get('success');
echo $res;
}
}
?>
Результат выполнения кода:
"Operation completed successfully"