-
-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ
UUID v7 в BINARY(16) (через toBytes()) или
ULID. Оба сортируются по времени создания — вставки идут
в конец индекса. Для BIGINT-колонок — Snowflake.
Одним пакетом покрыты пять семейств (UUID, ULID, NanoID, Snowflake, Sonyflake), все временные генераторы принимают PSR-20 часы, а формы сериализации включают «диалекты» обоих соседей. Подробности и честные минусы — в сравнении.
Да, полностью: канонические строки, байты, Base58/Base32-формы читаются и пишутся в обе стороны. Подтверждено интеграционными тестами против всех пяти аналогов.
Передайте фабрике MockClock и детерминированный источник случайности. Генерация станет воспроизводимой байт в байт.
Граница ввода должна быть жёсткой: мусор — это ошибка, о которой нужно
узнать сразу. Для мягкой проверки есть Uuid::isValid() / Ulid::isValid().
Да: внутри одной миллисекунды растёт 12-битный счётчик — идентификаторы остаются уникальными и строго возрастающими (RFC 9562 §6.2).
UUID v7 и ULID продолжают от последней выданной метки (самозаживление);
Snowflake/Sonyflake бросают clockMovedBackwards — их метка обязана
оставаться честной. Обоснование — на страницах фич.
Да: toGuidBytes() / fromGuidBytes() переставляют первые три поля
в little-endian, как в COM/ActiveDirectory.
Нет. Десятичная форма и Base58 считаются 32-битными словами на обычных int — расширения не требуются.
Минимализм зависимостей: пакет — про идентификаторы, интеграции — отдельными пакетами экосистемы CloudCastle (планируются).
CloudCastle Uuid · · PHP 8.1+
GitHub · Packagist · Releases · Discussions · Issues
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)