CloudCastle Clock

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

Clock — статический фасад

Назначение

Короткие имена для типовых сценариев: Clock::now(), Clock::utc(), Clock::mock(), Clock::frozen(), фабрики всех декораторов. Оформлен enum-ом без вариантов — инстанцирование исключено на уровне языка.

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

Простые скрипты и миграция легаси на управляемое время; Clock::now('+1 hour') возвращает DatePoint.

Пример

Clock::now();                       // текущий момент глобальных часов
Clock::utc()->timestamp();
Clock::step('2026-01-01', 5.0);     // StepClock
Clock::queue('10:00', '10:05');     // QueueClock
Clock::adapt($psrClock);            // PsrClockAdapter

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

В коде с DI предпочтительнее внедрять ClockInterface напрямую — фасад скрывает зависимость.

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

flowchart TD
    F[Clock facade] --> A[system/utc/inZone]
    F --> B[frozen/mock/monotonic]
    F --> C[offset/scaled/truncatedTo]
    F --> D[step/queue/adapt]
    F --> E[now → ClockHolder]

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

Аспект🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Единая точка входа во все реализации✅❌❌❌❌❌
Невозможность инстанцирования (enum)✅❌❌❌❌❌
now() с модификатором → DatePoint✅❌❌❌❌❌
Глобальные часы под капотом✅✅✅❌❌❌
Всего🏆 411000

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


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