Класс Ulid
Класс Ulid представляет собой реализацию
Universally Unique Lexicographically Sortable Identifier.
Он используется для создания уникальных идентификаторов,
которые можно сортировать как строки. В отличие от
класса Uuid, Ulid содержит встроенную
метку времени, что делает его удобным для сортировки
по времени создания. Идентификатор состоит из 128 бит:
48 бит отводятся под временную метку, а 80 бит -
под случайную часть. Класс предоставляет методы для
генерации, преобразования и сравнения идентификаторов.
Синтаксис
use SymfonyComponentUidUlid;
$ulid = new Ulid();
Пример
Давайте создадим новый объект Ulid и выведем
его строковое представление:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentUidUlid;
class UlidController extends AbstractController
{
public function index(): Response
{
$ulid = new Ulid();
return new Response((string) $ulid);
}
}
?>
Результат выполнения кода:
01HZX8Y9K5Q7V3N2M4P6R8T0W1
Пример
Давайте сгенерируем идентификатор с помощью
статического метода generate:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentUidUlid;
class UlidController extends AbstractController
{
public function index(): Response
{
$ulid = Ulid::generate();
return new Response((string) $ulid);
}
}
?>
Результат выполнения кода:
01HZX8Y9K5Q7V3N2M4P6R8T0W1
Пример
Давайте создадим идентификатор из строки с помощью
метода fromString:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentUidUlid;
class UlidController extends AbstractController
{
public function index(): Response
{
$ulid = Ulid::fromString('01HZX8Y9K5Q7V3N2M4P6R8T0W1');
return new Response((string) $ulid);
}
}
?>
Результат выполнения кода:
01HZX8Y9K5Q7V3N2M4P6R8T0W1
Пример
Давайте получим дату и время из идентификатора
с помощью метода getDateTime:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentUidUlid;
class UlidController extends AbstractController
{
public function index(): Response
{
$ulid = Ulid::fromString('01HZX8Y9K5Q7V3N2M4P6R8T0W1');
$dateTime = $ulid->getDateTime();
return new Response($dateTime->format('Y-m-d H:i:s'));
}
}
?>
Результат выполнения кода:
2024-06-15 12:30:45
Пример
Давайте сравним два идентификатора с помощью
метода equals:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentUidUlid;
class UlidController extends AbstractController
{
public function index(): Response
{
$ulid1 = Ulid::fromString('01HZX8Y9K5Q7V3N2M4P6R8T0W1');
$ulid2 = Ulid::fromString('01HZX8Y9K5Q7V3N2M4P6R8T0W1');
$res = $ulid1->equals($ulid2);
return new Response($res ? 'true' : 'false');
}
}
?>
Результат выполнения кода:
"true"
Смотрите также
-
класс
Uuid,
который генерирует уникальные идентификаторы -
метод
generate,
который создаёт новый Ulid -
метод
fromString,
который создаёт Ulid из строки -
метод
getDateTime,
который возвращает дату и время из Ulid