Метод save класса Session
Метод save класса Session закрывает текущую сессию и записывает все данные, которые были в неё помещены, в хранилище. После вызова этого метода сессия становится неактивной, и работа с ней требует повторного вызова метода start. Метод не принимает параметров и ничего не возвращает.
Синтаксис
public function save(): void
Пример
Давайте запишем значение в сессию и сохраним её:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\Attribute\Route;
class SessionController extends AbstractController
{
#[Route('/session/save', name: 'session_save')]
public function save(RequestStack $requestStack): Response
{
$session = $requestStack->getSession();
$session->set('user', 'abcde');
$session->save();
return new Response('saved');
}
}
?>
Результат выполнения кода:
"saved"
Пример
Давайте проверим, что после вызова метода save сессия закрыта:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\Attribute\Route;
class SessionController extends AbstractController
{
#[Route('/session/check', name: 'session_check')]
public function check(RequestStack $requestStack): Response
{
$session = $requestStack->getSession();
$session->start();
$session->save();
$res = $session->isStarted();
return new Response($res ? 'started' : 'closed');
}
}
?>
Результат выполнения кода:
"closed"