🇷🇺 Русский · 🇬🇧 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]
Сравнение возможности с аналогами
| Аспект | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Единая точка входа во все реализации | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Невозможность инстанцирования (enum) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
now() с модификатором → DatePoint | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Глобальные часы под капотом | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Всего | 🏆 4 | 1 | 1 | 0 | 0 | 0 |
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano