CloudCastle Clock

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

QueueClock — часы-очередь

Назначение

Выдаёт заранее заданные моменты по одному; исчерпание очереди — типизированное исключение: лишний вызов now() виден сразу.

Для чего и как применять

Точные сценарии: «первый вызов — 10:00, второй — 10:05». push() пополняет очередь, remaining()/isEmpty() — контроль.

Пример

$clock = QueueClock::from('2026-01-01 10:00:00', '2026-01-01 10:05:00');
$clock->now();       // 10:00:00
$clock->now();       // 10:05:00
$clock->now();       // InvalidClockValueException: очередь пуста

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

Не для длинных циклов с неизвестным числом чтений — очередь конечна по построению.

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

flowchart LR
    A[m1, m2, m3] -->|now| B(m1)
    B -->|now| C(m2)
    C -->|now| D(m3)
    D -->|now| E[/InvalidClockValueException/]

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

Аспект🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Предзаданная последовательность моментов✅❌❌❌❌❌
Исключение при исчерпании✅❌❌❌❌❌
Пополнение push() на лету✅❌❌❌❌❌
Чтение головы без потребления✅❌❌❌❌❌
Всего🏆 400000

← К списку возможностей


🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano