Метод isStarted
Метод isStarted класса Session
возвращает true, если сессия уже
запущена, и false в противном случае.
Метод не принимает параметров и не изменяет
состояние сессии. Он удобен для проверки
перед вызовом start или при работе
с данными сессии.
Синтаксис
public function isStarted(): bool
Пример
Давайте проверим, запущена ли сессия, до и после
вызова метода start:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class SessionController extends AbstractController
{
#[Route('/session/started', name: 'session_started')]
public function index(Request $request): Response
{
$session = $request->getSession();
$before = $session->isStarted();
$session->start();
$after = $session->isStarted();
return new Response(var_export([$before, $after], true));
}
}
?>
Результат выполнения кода:
[false, true]
Пример
Давайте используем isStarted для
безопасного чтения данных из сессии:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class SessionController extends AbstractController
{
#[Route('/session/read', name: 'session_read')]
public function read(Request $request): Response
{
$session = $request->getSession();
if (!$session->isStarted()) {
$session->start();
}
$user = $session->get('user', 'guest');
return new Response($user);
}
}
?>
Результат выполнения кода для адреса /session/read:
"guest"