Skip to content

Feature Nil max

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

⬛ Nil и Max UUID

← Возможности · Главная · Сравнение

Краевые значения RFC 9562: Nil (все биты 0) и Max (все биты 1) — «пустой» идентификатор и верхняя граница диапазона.

Принцип работы

use CloudCastle\Uuid\Uuid;
use CloudCastle\Uuid\Ulid;

Uuid::nil()->toString();     // '00000000-0000-0000-0000-000000000000'
Uuid::max()->toString();     // 'ffffffff-ffff-ffff-ffff-ffffffffffff'

Uuid::nil()->isNil();        // true
Uuid::max()->isMax();        // true
Uuid::nil()->version();      // null — версия есть только у варианта RFC

Ulid::nil();                 // '00000000000000000000000000'
Ulid::max();                 // '7ZZZZZZZZZZZZZZZZZZZZZZZZZ'

Плюсы

  • Явные краевые значения для диапазонных запросов (BETWEEN nil AND max).
  • isNil()/isMax() — читаемые проверки вместо сравнения со строкой.

Минусы

  • Nil как «отсутствие значения» в БД хуже честного NULL — используйте осознанно.

✅ Рекомендуется

  • Границы сканирования диапазонов по BINARY-колонке.
  • Сигнальные значения в протоколах, где NULL недоступен.

❌ Антипаттерны

  • Nil UUID как дефолт колонки «чтобы не было NULL» без семантики.

Схема фичи

flowchart LR
    N["nil(): 16 × 0x00"] --> U[Uuid]
    M["max(): 16 × 0xFF"] --> U
    U --> C["isNil() / isMax() / сравнение"]
Loading

Жизненный цикл

sequenceDiagram
    participant A as Приложение
    participant U as Uuid

    A->>U: nil() / max()
    U-->>A: краевое значение
    A->>U: compareTo(любой) — nil ≤ x ≤ max
Loading

Сравнение с аналогами

Возможность Uuid ramsey/uuid symfony/uid 🏆 Победитель
Nil UUID Паритет
Max UUID Паритет
Nil/Max ULID Uuid + symfony/uid
Проверки isNil()/isMax() ⚠️ ⚠️ Uuid

Clone this wiki locally