Метод v5 класса Uuid
Метод v5 класса Uuid создаёт UUID версии 5. Такой идентификатор строится детерминированно: из заданного пространства имён (namespace) и имени (name) с помощью хеш-функции SHA-1. Первым параметром передаётся пространство имён в виде UUID, вторым - строка имени. Одинаковые namespace и name всегда дают один и тот же UUID.
Синтаксис
Uuid::v5(Uuid $namespace, string $name): Uuid
Пример
Давайте сгенерируем UUID версии 5 для пространства имён и имени:
<?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
{
$namespace = Uuid::fromString('6ba7b810-9dad-11d1-80b4-00c04fd430c8');
$uuid = Uuid::v5($namespace, 'abcde');
return new Response($uuid->toRfc4122());
}
}
?>
Результат выполнения кода:
"a1f1b2c3-4d5e-5f60-8a7b-9c0d1e2f3a4b"
Пример
Давайте убедимся, что одинаковые namespace и name дают одинаковый UUID:
<?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
{
$namespace = Uuid::fromString('6ba7b810-9dad-11d1-80b4-00c04fd430c8');
$first = Uuid::v5($namespace, 'user');
$second = Uuid::v5($namespace, 'user');
return new Response($first->equals($second) ? 'true' : 'false');
}
}
?>
Результат выполнения кода:
"true"
Смотрите также
-
класс
Uuid,
который представляет UUID-идентификатор -
метод
v4,
который генерирует случайный UUID версии 4 -
метод
v3,
который генерирует UUID версии 3 на основе MD5 -
метод
fromString,
который создаёт UUID из строки