Skip to content

Configuration

github-actions[bot] edited this page Jul 15, 2026 · 1 revision

⚙️ Конфигурация

Главная · Возможности

Пакету не нужны файлы конфигурации — всё задаётся аргументами фабрик.

UuidFactory

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 — случайная
);

UlidFactory

new UlidFactory(clock: $clock, random: $random);

SnowflakeFactory / SonyflakeFactory

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,
);

NanoIdFactory

$f = new NanoIdFactory($random);
$f->generate(21);                                  // длина
$f->generateWithAlphabet('0123456789abcdef', 32);  // алфавит 2..255 уникальных байтов

Процессные фабрики по умолчанию

Статические шорткаты (Uuid::uuid4(), Ulid::generate(), …) используют ленивый синглтон …Factory::default() — одно монотонное состояние на процесс. Для DI-контейнера регистрируйте фабрики как сервисы и внедряйте явно.

Выбор идентификатора

Задача Берите
Первичный ключ БД UUID v7toBytes() или ULID
Публичный непредсказуемый ID UUID v4
Детерминированный ID из имени UUID v5
Короткая ссылка / код NanoID
BIGINT в распределённой системе Snowflake / Sonyflake

Clone this wiki locally