Компонент UID был представлен в Symfony 5.1 как экспериментальная функция, которая поможет вам создавать и работать с UID (универсально уникальными идентификаторами), такими как UUID и ULID. В Symfony 5.3 этот компонент больше не считается экспериментальным, и добавили в него несколько новых функций.
Новые способы создания UID
Создавать значения UID легко благодаря таким методам, как Uuid::v1()
, Uuid::v4()
, new Ulid()
и т. д. В Symfony 5.3 добавили новые методы, чтобы вы могли создавать объекты UID из нескольких строковых представлений UID:
$uuid = Uuid::fromBinary("\xd9\xe7\xa1\x84\x5d\x5b\x11\xea\xa6\x2a\x34\x99\x71\x00\x62\xd0");
$uuid = Uuid::fromBase32('6SWYGR8QAV27NACAHMK5RG0RPG');
$uuid = Uuid::fromBase58('TuetYWNHhmuSQ3xPoVLv9M');
$uuid = Uuid::fromRfc4122('d9e7a184-5d5b-11ea-a62a-3499710062d0');
$ulid = Ulid::fromBinary("\x01\x71\x06\x9d\x59\x3d\x97\xd3\x8b\x3e\x23\xd0\x6d\xe5\xb3\x08");
$ulid = Ulid::fromBase32('01E439TP9XJZ9RPFH3T1PYBCR8');
$ulid = Ulid::fromBase58('1BKocMc5BnrVcuq2ti4Eqm');
$ulid = Ulid::fromRfc4122('0171069d-593d-97d3-8b3e-23d06de5b308');
Кроме того, добавили несколько служб, таких как ulid.factory
и uuid.factory
(и их соответствующие псевдонимы автоподключения UlidFactory
, UuidFactory
и т. д.), Чтобы вы могли настраивать создание UID. Значения по умолчанию для сгенерированных UID теперь настроены семантически:
# config/packages/framework.yaml
framework:
uid:
default_uuid_version: 4
Наконец, добавили классы UlidGenerator
и UuidGenerator
, чтобы вы могли использовать их в качестве генераторов идентификаторов Doctrine, чтобы использовать UID в качестве значений ваших первичных ключей в сущностях Doctrine.
Типы форм UID
Интеграция с компонентом формы была одной из последних недостающих функций UID. Вот почему в Symfony 5.3 добавили типы форм UuidType
и UlidType
, чтобы вы могли работать со значениями UID в своих формах.
Эти типы форм отображают <input type="text">
поле со строковым представлением данного объекта UID и преобразуют его обратно в объект UID при отправке формы.
Сериализация UID
Компонент Serializer включает UidNormalizer
для преобразования объектов типа Symfony\Component\Uid\AbstractUid
в строки. В Symfony 5.3 улучшили его для поддержки различных строковых форматов.
Теперь вы можете передать параметр контекста UidNormalizer::NORMALIZATION_FORMAT_KEY
в сериализатор и установить для него желаемый формат (например, UidNormalizer::NORMALIZATION_FORMAT_RFC_4122
и т. д.)
Создание и проверка UID в консоли
Компонент UID теперь включает некоторые консольные команды, которые помогут вам генерировать и проверять детали значений UUID/ULID.
Прочтите документацию по командам UID, чтобы узнать, как включить эти команды в вашем приложении перед их использованием:
php bin/console uuid:generate --random-based php bin/console ulid:generate --count=2 --format=rfc4122 php bin/console uuid:generate --help php bin/console ulid:generate --help
php bin/console ulid:inspect 01F2TTCSYK1PDRH73Z41BN1C4X --------------------- -------------------------------------- Label Value --------------------- -------------------------------------- Canonical (Base 32) 01F2TTCSYK1PDRH73Z41BN1C4X Base 58 1BYGm16jS4kX3VYCysKKq6 RFC 4122 0178b5a6-67d3-0d9b-889c-7f205750b09d --------------------- -------------------------------------- Timestamp 2021-04-09 08:01:24.947 --------------------- --------------------------------------