🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
CallbackClock — часы на замыкании
Назначение
Источник момента — произвольное замыкание: мост к нестандартным источникам времени (внешний сервис, генератор сценария).
Для чего и как применять
Интеграция с чужим API времени или сложной логикой выдачи моментов без написания собственного класса часов.
Пример
$clock = new CallbackClock(
fn (): DateTimeImmutable => $externalTimeService->current(),
'UTC',
);
Анти-паттерны
Замыкание должно быть быстрым и без побочных эффектов — оно вызывается на каждое чтение.
Жизненный цикл
flowchart LR
A[Closure] -->|DateTimeImmutable| B[CallbackClock]
B --> C[ClockInterface consumers]
Сравнение возможности с аналогами
| Аспект | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Произвольный источник момента | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Декларируемая таймзона | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Полный контракт часов пакета | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Замыкание вместо наследования | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Всего | 🏆 4 | 0 | 0 | 0 | 0 | 0 |
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano