-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Serialization forms
github-actions[bot] edited this page Jul 15, 2026
·
1 revision
Девять форм ввода-вывода одних и тех же 16 байт — самый широкий набор среди
PHP-библиотек, плюс умный fromString(), распознающий форму по длине.
use CloudCastle\Uuid\Uuid;
$u = Uuid::uuid7();
$u->toString(); // 'c232ab00-9414-…' каноническая (36)
$u->toBytes(); // 16 сырых байт — BINARY(16)
$u->toHex(); // 32 hex-символа
$u->toBase58(); // 22 символа (совместимо с symfony/uid)
$u->toBase32(); // 26 символов — форма ULID
$u->toUrn(); // 'urn:uuid:c232ab00-…'
$u->toInteger(); // '258338462…' — десятичное 128-битное
$u->toGuidBytes(); // GUID Microsoft (little-endian поля)
$u->toUlid(); // объект Ulid тех же байтовРазбор — симметричный, плюс умная точка входа:
Uuid::fromString($любаяФорма); // по длине: 16/22/26/32/36/38/45
Uuid::fromRfc4122($канон); // строго каноническая
Uuid::fromHex('0x…'); // hex, допускает префикс 0x
Uuid::fromBase58($s22);
Uuid::fromBase32($ulid26);
Uuid::fromInteger($десятичное);
Uuid::fromGuidBytes($guid16);
Uuid::fromUrn('urn:uuid:…');
Uuid::isValid($строка); // проверка без исключенияВсе формы полностью валидируются на входе; управляющие символы в сообщениях ошибок экранируются (безопасно для логов).
- Один объект — все представления: БД, URL, журналы, интеграции с MS-стеком.
- Base58/Base32 совместимы с symfony/uid, URN и десятичная — с ramsey/uuid: пакет читает и пишет «диалекты» обоих.
- Длинная арифметика 128 бит (десятичная форма, Base58) — 32-битными словами, без GMP/BCMath.
- Умный
fromString()различает формы по длине: hex-строку из ровно 36 символов без дефисов он не примет за hex (это защита, а не недостаток).
-
toBytes()+ BINARY(16) — компактное хранение и быстрые индексы. -
toBase58()— короткие человекочитаемые ссылки без похожих символов.
- Хранение канонической строки VARCHAR(36) в больших таблицах — двойной размер против BINARY.
flowchart TB
B[("Uuid — 16 байт")]
B --> S1["toString() 36"] & S2["toHex() 32"] & S3["toBase58() 22"] & S4["toBase32() 26"]
B --> S5["toUrn() 45"] & S6["toInteger() ≤39"] & S7["toGuidBytes() 16LE"] & S8["toUlid()"]
F["fromString() — умный разбор по длине"] --> B
sequenceDiagram
participant A as Приложение
participant U as Uuid
A->>U: fromString(ввод)
U->>U: длина → форма → полная валидация
U-->>A: 16 байт (или InvalidIdentifierException)
A->>U: toBase58() / toBytes() / …
U-->>A: нужное представление
| Возможность | Uuid | ramsey/uuid | symfony/uid | 🏆 Победитель |
|---|---|---|---|---|
| Канон / байты / hex | ✅ | ✅ | ✅ | Паритет |
| Base58 | ✅ | ❌ | ✅ | Uuid + symfony/uid |
| Base32 (форма ULID) | ✅ | ❌ | ✅ | Uuid + symfony/uid |
| URN | ✅ | ✅ | ❌ | Uuid + ramsey/uuid |
| Десятичное 128-битное | ✅ | ✅ | ❌ | Uuid + ramsey/uuid |
| GUID (little-endian) | ✅ | ✅ | ❌ | Uuid + ramsey/uuid |
| Умный fromString | ✅ | ❌ | ✅ | Uuid + symfony/uid |
| Всё вместе в одном классе | ✅ | ❌ | ❌ | Uuid |
CloudCastle Uuid · · PHP 8.1+
GitHub · Packagist · Releases · Discussions · Issues
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)