-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Uuid ulid bridge
github-actions[bot] edited this page Jul 15, 2026
·
1 revision
UUID и ULID — два прочтения одних и тех же 16 байт. Пакет конвертирует их друг в друга без перекодирования: просто отдаёт байты второму типу.
use CloudCastle\Uuid\Uuid;
use CloudCastle\Uuid\Ulid;
$uuid = Uuid::uuid7();
$ulid = $uuid->toUlid(); // тот же момент, та же случайность
$ulid->toUuid()->equals($uuid); // круговая конверсия без потерь? — байты равны
$uuid->toBase32() === $ulid->toString(); // true: одна форма
// сквозное сравнение между типами — по байтам
$uuid->compareTo($ulid); // 0UUID v7 и ULID структурно совместимы: 48 бит миллисекунд в старших байтах —
timestampMs() совпадает у обеих форм.
- В БД — BINARY(16) как UUID, в URL — 26 символов ULID: одно значение, две формы.
- Конверсия O(1): никакой математики, только передача байтов.
- Интеграция систем «UUID-мира» и «ULID-мира» без таблиц соответствия.
- Для UUID v1 «метка времени ULID-прочтения» бессмысленна (раскладка иная) — конвертируйте осмысленно v7/v4.
- API, отдающее ULID наружу при UUID-хранении внутри (или наоборот).
- Хранение обеих форм в двух колонках — достаточно одной BINARY(16).
flowchart LR
B[("16 байт")]
U[Uuid] ---|"toUlid()"| B
L[Ulid] ---|"toUuid()"| B
U -->|"toBase32()"| S26["26 символов"]
L -->|"toString()"| S26
sequenceDiagram
participant DB as БД (BINARY 16)
participant A as Приложение
participant W as Веб (URL)
DB->>A: 16 байт
A->>A: Uuid::fromBytes(...)
A->>W: toUlid()->toString() — короткая ссылка
W->>A: Ulid::fromString(url)
A->>DB: toBytes() — те же 16 байт
| Возможность | Uuid | ramsey/uuid | symfony/uid | robinvdvleuten/ulid | 🏆 Победитель |
|---|---|---|---|---|---|
| UUID → ULID | ✅ | ❌ | ✅ | — | Uuid + symfony/uid |
| ULID → UUID | ✅ | — | ✅ | ❌ | Uuid + symfony/uid |
| Сквозное сравнение типов | ✅ | ❌ | ❌ | Uuid |
CloudCastle Uuid · · PHP 8.1+
GitHub · Packagist · Releases · Discussions · Issues
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)