Новое в Symfony 5.1: Компонент Uid

UID (универсально уникальные идентификаторы), такие как UUID, становятся все более популярными в веб-разработке. Они используются в URL-адресах, в качестве ключей кэша, в качестве первичных ключей в базах данных и т. д.

В Symfony 5.1 представили новый компонент под названием Uid, который генерирует некоторые из этих UID и предоставляет для них утилиты. Первая версия компонента поддерживает как UUID, так и ULID:

use Symfony\Component\Uid\Uuid;
use Symfony\Component\Uid\Ulid;

// generating a random UUID type 4 (all UUID types are supported)
$uuid = Uuid::v4();

// generating a UUID Type 6 (which is not part of the standard, but it's
// supported by the component because it's popular enough)
$uuid = Uuid::v6();

// generating a ULID (there's only one type of them)
$ulid = new Ulid();

Компонент также предоставляет необходимые утилиты, необходимые для обработки UID:

// checking if some UUID is null
use Symfony\Component\Uid\NilUuid;
if ($uuid instanceof NilUuid) {
    // ...
}

// comparing UUIDs
$uuid1 = Uuid::v1();
$uuid4 = Uuid::v4();
$uuid1->equals($uuid4); // false

// converting to different formats
$ulid = Ulid::fromString('01E439TP9XJZ9RPFH3T1PYBCR8');
$ulid->toBinary();  // string(16) "..." (binary contents can't be printed)
$ulid->toBase32();  // string(26) "01E439TP9XJZ9RPFH3T1PYBCR8"
$ulid->toBase58();  // string(22) "1BKocMc5BnrVcuq2ti4Eqm"
$ulid->toRfc4122(); // string(36) "0171069d-593d-97d3-8b3e-23d06de5b308"

Прочитайте документацию по компонентам Uid, чтобы узнать обо всех предоставляемых функциях.

Важно учитывать, что этот компонент не заменяет полнофункциональные библиотеки, такие как ramsey/uuid. Компонент предоставляет только минимальные функции, необходимые для обработки UID. Более того, компонент поддерживает несколько типов UID, и мы можем добавить больше типов в будущем (если они достаточно популярны и имеют смысл в сценариях, ориентированных на приложения Symfony).