Метод replace класса Session
Метод replace класса Session
полностью заменяет все данные текущей сессии
новым массивом. Первым параметром передаётся
ассоциативный массив с новыми данными сессии.
Старые данные при этом полностью удаляются.
Синтаксис
public function replace(array $attributes): void
Пример
Давайте заменим все данные сессии новым массивом:
<?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 ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$session = $request->getSession();
$session->set('user', 'abcde');
$session->set('role', 'admin');
$session->replace([
'user' => 'hello',
'page' => 1
]);
return new Response($session->get('user'));
}
}
?>
Результат выполнения кода:
"hello"
Пример
Давайте убедимся, что старые ключи сессии удаляются:
<?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 ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$session = $request->getSession();
$session->set('role', 'admin');
$session->replace([
'user' => 'abcde'
]);
return new Response($session->has('role') ? 'yes' : 'no');
}
}
?>
Результат выполнения кода:
"no"