Метод withDomain класса Cookie
Метод withDomain класса Cookie создаёт и возвращает новый экземпляр cookie с изменённым доменом. Исходный объект при этом не изменяется, так как класс Cookie является неизменяемым. Первым параметром передаётся строка с именем домена, например 'example.com'. Если передать null, то cookie будет доступна только текущему домену.
Синтаксис
public function withDomain(?string $domain): static
Пример
Давайте создадим cookie и зададим ей домен 'example.com':
<?php
use Symfony\Component\HttpFoundation\Cookie;
$cookie = Cookie::create('abcde')
->withDomain('example.com');
echo $cookie->getDomain();
?>
Результат выполнения кода:
"example.com"
Пример
Давайте убедимся, что исходный объект не меняется, а метод возвращает новую cookie:
<?php
use Symfony\Component\HttpFoundation\Cookie;
$cookie = Cookie::create('abcde');
$newCookie = $cookie->withDomain('example.com');
echo $cookie->getDomain();
echo "\n";
echo $newCookie->getDomain();
?>
Результат выполнения кода:
""
"example.com"
Пример
Давайте сбросим домен cookie, передав null:
<?php
use Symfony\Component\HttpFoundation\Cookie;
$cookie = Cookie::create('abcde')
->withDomain('example.com')
->withDomain(null);
echo $cookie->getDomain();
?>
Результат выполнения кода:
""
Пример
Давайте отправим cookie с заданным доменом в ответе контроллера:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class CookieController extends AbstractController
{
#[Route('/cookie', name: 'cookie_index')]
public function index(): Response
{
$cookie = Cookie::create('abcde')
->withValue('hello')
->withDomain('example.com');
$response = new Response('cookie set');
$response->headers->setCookie($cookie);
return $response;
}
}
?>
Результат выполнения кода для адреса /cookie:
cookie set