-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Uuid named
github-actions[bot] edited this page Jul 15, 2026
·
1 revision
Детерминированные UUID: одно и то же имя в одном пространстве имён всегда даёт один и тот же идентификатор. v5 (SHA-1) — основной; v3 (MD5) — для совместимости с существующими системами.
use CloudCastle\Uuid\Uuid;
use CloudCastle\Uuid\UuidNamespace;
Uuid::uuid5(UuidNamespace::Dns, 'www.example.com');
// всегда '2ed6657d-e927-568b-95e1-2665a8aea6a2' (вектор RFC 9562)
Uuid::uuid3(UuidNamespace::Dns, 'www.example.com');
// всегда '5df41881-3aed-3515-88a7-2f4a814cf09e'Пространство имён — enum UuidNamespace (Dns / Url / Oid / X500),
готовый Uuid или каноническая строка:
$app = Uuid::uuid5(UuidNamespace::Url, 'https://my-app.example'); // корень приложения
$user = Uuid::uuid5($app, 'user:42'); // иерархия имёнДля предопределённых пространств байты берутся из константной таблицы — без разбора канонической строки на каждый вызов.
- Воспроизводимость: идентификатор восстанавливается из имени в любой системе.
- Иерархии: результат v5 сам служит пространством имён следующего уровня.
- Никакого состояния, времени и случайности.
- MD5/SHA-1 здесь — не криптографическая защита: имя перебираемо, если пространство известно.
- Стабильные идентификаторы сущностей из внешних ключей (URL, e-mail, коды).
- Слияние данных из независимых источников без координации.
- Секретные значения в имени: v3/v5 — хеш, а не шифрование.
flowchart LR
NS["Пространство имён<br/>(enum / Uuid / строка)"] --> H["MD5 (v3) / SHA-1 (v5)"]
NAME["Имя (строка)"] --> H
H -->|"16 байт + версия/вариант"| U[Uuid v3/v5]
sequenceDiagram
participant A as Приложение
participant F as UuidFactory
A->>F: uuid5(Dns, 'www.example.com')
F->>F: байты пространства (константа для enum)
F->>F: sha1(байты . имя) → 16 байт
F->>F: маска версии 5 + варианта RFC
F-->>A: детерминированный Uuid
| Возможность | Uuid | ramsey/uuid | symfony/uid | 🏆 Победитель |
|---|---|---|---|---|
| UUID v3 / v5 | ✅ | ✅ | ✅ | Паритет |
| Enum предопределённых пространств | ✅ | ❌ | Uuid | |
| Пространство строкой / объектом | ✅ | ✅ | Uuid + ramsey/uuid | |
| Скорость v5 до строки | 🥇 | 🥉 | 🥈 | Uuid |
CloudCastle Uuid · · PHP 8.1+
GitHub · Packagist · Releases · Discussions · Issues
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)