CloudCastle Clock

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

OffsetClock — часы со смещением

Назначение

Декоратор: «путешествие во времени» относительно внутренних часов на фиксированное смещение (секунды или DateInterval, знак любой).

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

Стейджинг «в будущем» (тесты акций, сроков), компенсация рассинхрона со внешней системой: OffsetClock::aheadBy($clock, 3600.0).

Пример

$tomorrow = OffsetClock::aheadBy(SystemClock::utc(), 86_400.0);
$yesterday = OffsetClock::behindBy(SystemClock::utc(), new DateInterval('P1D'));

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

Не для тестового детерминизма — внутри всё ещё живое время; для тестов берите FrozenClock/MockClock.

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

flowchart LR
    A[Inner clock] -->|now()| B[OffsetClock]
    B -->|+offset| C[Shifted moment]
    C --> D[Consumer]

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

Аспект🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Смещение декоратором без глобального состояния✅❌❌❌❌❌
Интервал или секунды, знак любой✅❌❌❌❌❌
Переопределение таймзоны выдачи✅❌❌❌❌❌
Композиция с любыми часами пакета✅❌❌❌❌❌
Всего🏆 400000

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


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