Метод v4 класса Uuid
Метод v4 класса Uuid создаёт
UUID версии 4. Такой идентификатор формируется
из случайных байтов, а не из времени или MAC-адреса.
Метод не принимает обязательных параметров и
возвращает новый объект Uuid. Благодаря
высокой энтропии вероятность коллизии крайне мала,
поэтому v4 удобно использовать для первичных
ключей, токенов и внешних идентификаторов.
Синтаксис
Uuid::v4()
Пример
Давайте сгенерируем случайный UUID версии 4 и выведем его на экран:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Uid\Uuid;
class UuidController extends AbstractController
{
public function index(): Response
{
$uuid = Uuid::v4();
return new Response($uuid->toRfc4122());
}
}
?>
Результат выполнения кода:
"9f1c7c2e-3b5a-4d8e-9a1b-2c3d4e5f6a7b"
Пример
Давайте сгенерируем несколько идентификаторов и убедимся, что они различаются:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Uid\Uuid;
class UuidController extends AbstractController
{
public function index(): Response
{
$res = [
Uuid::v4()->toRfc4122(),
Uuid::v4()->toRfc4122(),
Uuid::v4()->toRfc4122(),
];
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
["1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "6f5e4d3c-2b1a-4f8e-9d7c-6b5a4f3e2d1c", "0a1b2c3d-4e5f-4a6b-7c8d-9e0f1a2b3c4d"]
Пример
Давайте используем UUID версии 4 как первичный ключ сущности:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Uid\Uuid;
#[ORM\Entity]
class Article
{
#[ORM\Id]
#[ORM\Column(type: 'uuid', unique: true)]
private Uuid $id;
#[ORM\Column(type: 'string')]
private string $title;
public function __construct()
{
$this->id = Uuid::v4();
}
public function getId(): Uuid
{
return $this->id;
}
public function getTitle(): string
{
return $this->title;
}
public function setTitle(string $title): void
{
$this->title = $title;
}
}
?>
Результат выполнения кода при создании сущности:
"3f8e2d1c-4b5a-4c6d-8e9f-0a1b2c3d4e5f"
Смотрите также
-
класс
Uuid,
который представляет UUID идентификатор -
метод
v1,
который генерирует UUID на основе времени -
метод
v7,
который генерирует UUID на основе Unix-времени -
метод
fromString,
который создаёт UUID из строки