Skip to content
github-actions[bot] edited this page Jul 15, 2026 · 1 revision

❓ FAQ

Главная · Возможности

Какой идентификатор выбрать для первичного ключа?

UUID v7 в BINARY(16) (через toBytes()) или ULID. Оба сортируются по времени создания — вставки идут в конец индекса. Для BIGINT-колонок — Snowflake.

Чем пакет отличается от ramsey/uuid и symfony/uid?

Одним пакетом покрыты пять семейств (UUID, ULID, NanoID, Snowflake, Sonyflake), все временные генераторы принимают PSR-20 часы, а формы сериализации включают «диалекты» обоих соседей. Подробности и честные минусы — в сравнении.

Совместимы ли значения с другими библиотеками?

Да, полностью: канонические строки, байты, Base58/Base32-формы читаются и пишутся в обе стороны. Подтверждено интеграционными тестами против всех пяти аналогов.

Как получить воспроизводимые идентификаторы в тестах?

Передайте фабрике MockClock и детерминированный источник случайности. Генерация станет воспроизводимой байт в байт.

Почему Uuid::fromString() бросает исключение, а не возвращает null?

Граница ввода должна быть жёсткой: мусор — это ошибка, о которой нужно узнать сразу. Для мягкой проверки есть Uuid::isValid() / Ulid::isValid().

Генерация v7 в цикле даёт одинаковые миллисекунды. Это нормально?

Да: внутри одной миллисекунды растёт 12-битный счётчик — идентификаторы остаются уникальными и строго возрастающими (RFC 9562 §6.2).

Что будет, если системные часы прыгнут назад?

UUID v7 и ULID продолжают от последней выданной метки (самозаживление); Snowflake/Sonyflake бросают clockMovedBackwards — их метка обязана оставаться честной. Обоснование — на страницах фич.

Поддерживается ли GUID Microsoft?

Да: toGuidBytes() / fromGuidBytes() переставляют первые три поля в little-endian, как в COM/ActiveDirectory.

Нужен ли GMP или BCMath для 128-битных форм?

Нет. Десятичная форма и Base58 считаются 32-битными словами на обычных int — расширения не требуются.

Почему нет Doctrine-типов в пакете?

Минимализм зависимостей: пакет — про идентификаторы, интеграции — отдельными пакетами экосистемы CloudCastle (планируются).

Clone this wiki locally