-
-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration
github-actions[bot] edited this page Jul 15, 2026
·
1 revision
Пакету не нужны файлы конфигурации — всё задаётся аргументами фабрик.
use CloudCastle\Uuid\UuidFactory;
new UuidFactory(
clock: $psr20Clock, // null — быстрый системный путь (microtime)
random: $randomSource, // null — криптографический SystemRandomSource
node: '9f6bdeced846', // v1/v6: 12 hex или 6 байт; null — случайный+multicast
clockSequence: 0x33C8, // v1/v6: 0..16383; null — случайная
);new UlidFactory(clock: $clock, random: $random);new SnowflakeFactory(
datacenterId: 0, // 0..31
workerId: 0, // 0..31
epoch: 1_577_836_800_000, // DateTimeImmutable | мс Unix | null (2020-01-01)
clock: $clock,
);
new SonyflakeFactory(
machineId: 0, // 0..65535
epoch: null, // null — 2014-09-01 (как в оригинале Sony)
clock: $clock,
);$f = new NanoIdFactory($random);
$f->generate(21); // длина
$f->generateWithAlphabet('0123456789abcdef', 32); // алфавит 2..255 уникальных байтовСтатические шорткаты (Uuid::uuid4(), Ulid::generate(), …) используют
ленивый синглтон …Factory::default() — одно монотонное состояние на процесс.
Для DI-контейнера регистрируйте фабрики как сервисы и внедряйте явно.
| Задача | Берите |
|---|---|
| Первичный ключ БД |
UUID v7 → toBytes() или ULID
|
| Публичный непредсказуемый ID | UUID v4 |
| Детерминированный ID из имени | UUID v5 |
| Короткая ссылка / код | NanoID |
| BIGINT в распределённой системе | Snowflake / Sonyflake |
CloudCastle Uuid · · PHP 8.1+
GitHub · Packagist · Releases · Discussions · Issues
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)