🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
TruncatingClock — усечение моментов
Назначение
Декоратор: округляет показания вниз до границы единицы (TruncationUnit: секунда, минута, час, сутки...).
Для чего и как применять
Ключи кэша по минутам, группировка метрик по интервалам: TruncatingClock::toMinute($clock) — паритет с beste MinuteClock, но для любой единицы.
Пример
$byMinute = TruncatingClock::toMinute(SystemClock::utc());
$byHour = new TruncatingClock(SystemClock::utc(), TruncationUnit::Hour);
$key = 'stats:' . $byHour->now()->format('YmdH');
Анти-паттерны
Не для точных меток событий — микросекунды сознательно отбрасываются.
Жизненный цикл
flowchart LR
A[Inner clock] -->|12:34:56.789| B[TruncatingClock unit=Minute]
B -->|12:34:00.000| C[Consumer]
Сравнение возможности с аналогами
| Аспект | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Произвольная единица усечения | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Усечение до минуты | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| Декоратор над любыми часами | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| Дешёвый timestamp() без объекта | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Всего | 🏆 4 | 0 | 0 | 0 | 2 | 0 |
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano