-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Uuid v2 dce
github-actions[bot] edited this page Jul 15, 2026
·
1 revision
Редкая, но входящая в RFC 9562 версия: поверх временно́й раскладки v1 в идентификатор встраиваются домен DCE (Person / Group / Organization) и 32-битный локальный идентификатор (UID, GID или иной).
use CloudCastle\Uuid\UuidDceDomain;
use CloudCastle\Uuid\UuidFactory;
$factory = new UuidFactory();
$uuid = $factory->uuid2(UuidDceDomain::Person, 1000); // UID пользователя
$uuid->version(); // 2
// домен занимает девятый байт, локальный ID — первые четыреЛокальный идентификатор передаётся явно (0..2³²−1) — пакет не читает UID/GID процесса сам: генерация остаётся детерминированной и не зависит от окружения.
- Полный охват RFC 9562 — v2 умеют немногие (symfony/uid не умеет).
- Идентификатор субъекта читается прямо из UUID.
- Точность времени снижена (time_low заменён локальным ID) — уникальность в пределах ~7 минут обеспечивают последовательность и узел.
- Интеграция с POSIX/DCE-системами и аудит доступов.
- Использование v2 «как обычного v1» без нужды в домене — берите v1/v6.
flowchart LR
LID["Локальный ID (32 бита)"] --> F[UuidFactory]
D["UuidDceDomain (байт)"] --> F
T["Время v1 (усечённое)"] --> F
F --> U[Uuid v2]
sequenceDiagram
participant A as Приложение
participant F as UuidFactory
A->>F: uuid2(Person, 1000)
F->>F: тики Григория (монотоника общая с v1/v6)
F->>F: time_low := 1000, clock_seq_low := домен
F-->>A: Uuid v2
| Возможность | Uuid | ramsey/uuid | symfony/uid | 🏆 Победитель |
|---|---|---|---|---|
| UUID v2 | ✅ | ✅ | ❌ | Uuid + ramsey/uuid |
| Явный локальный идентификатор | ✅ | ✅ | — | Uuid + ramsey/uuid |
| Работа без ext-posix | ✅ | — | Uuid |
CloudCastle Uuid · · PHP 8.1+
GitHub · Packagist · Releases · Discussions · Issues
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)