Метод v7 класса Uuid
Метод v7 класса Uuid создаёт UUID версии 7.
Такой идентификатор строится на основе текущей временной метки
в миллисекундах, что делает его сортируемым по времени создания.
Метод является статическим и возвращает объект Uuid.
Оставшаяся часть значений заполняется случайными данными.
Синтаксис
Uuid::v7(): Uuid
Пример
Давайте сгенерируем UUID версии 7 и выведем его строковое представление:
<?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::v7();
return new Response((string) $uuid);
}
}
?>
Результат выполнения кода:
"018f3c1e-7b2a-7c3d-8e4f-1a2b3c4d5e6f"
Пример
Давайте создадим несколько UUID версии 7 и сравним их порядок сортировки:
<?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
{
$first = Uuid::v7();
usleep(1000);
$second = Uuid::v7();
$res = [$first->toRfc4122(), $second->toRfc4122()];
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
["018f3c1e-7b2a-7c3d-8e4f-1a2b3c4d5e6f", "018f3c1e-7c1b-7a2c-9f5e-6d7c8b9a0f1e"]
Пример
Давайте сохраним UUID версии 7 в свойстве сущности и вернём его как строку:
<?php
namespace App\Entity;
use Symfony\Component\Uid\Uuid;
class Article
{
private Uuid $uuid;
private string $title;
public function __construct(string $title)
{
$this->uuid = Uuid::v7();
$this->title = $title;
}
public function getUuid(): Uuid
{
return $this->uuid;
}
public function getTitle(): string
{
return $this->title;
}
}
?>
Теперь используем сущность в контроллере:
<?php
namespace App\Controller;
use App\Entity\Article;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class UuidController extends AbstractController
{
public function index(): Response
{
$article = new Article('article');
$res = $article->getUuid()->toRfc4122() . ' ' . $article->getTitle();
return new Response($res);
}
}
?>
Результат выполнения кода:
"018f3c1e-7b2a-7c3d-8e4f-1a2b3c4d5e6f article"