CloudCastle Clock

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

FrozenClock — замороженные часы

Назначение

Детерминизм тестов: время стоит, пока его явно не сдвинут setTo()/modify()/advance()/rewind().

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

Базовый инструмент юнит-тестов: FrozenClock::from('2026-01-01 00:00:00', 'UTC'); снимок любых часов — $clock->freeze().

Пример

$clock = FrozenClock::from('2026-01-01 00:00:00', 'UTC');
$clock->advance(90.0);            // +90 секунд
$clock->modify('+1 day');
$clock->rewind(30.0);             // назад на 30 секунд

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

Не используйте в проде: остановленное время ломает TTL и расписания.

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

stateDiagram-v2
    [*] --> Frozen: from()/fromUtcNow()
    Frozen --> Frozen: now() (same moment)
    Frozen --> Shifted: advance()/rewind()/modify()/setTo()
    Shifted --> Shifted: now() (new fixed moment)

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

Аспект🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Явные сдвиги вперёд и назад✅❌❌❌❌❌
Строковые модификаторы (+1 day)✅❌✅❌❌❌
Типизированная ошибка на мусорный ввод✅❌✅❌❌❌
Снимок из любых часов (freeze())✅❌❌❌❌❌
Всего🏆 402000

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


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