🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
ScaledClock — часы с масштабом времени
Назначение
Декоратор: виртуальное время течёт быстрее (scale > 1) или медленнее (scale < 1) реального от точки создания.
Для чего и как применять
Симуляции и демо: «сутки за минуту», ускоренная проверка сценариев с расписаниями.
Пример
$fast = new ScaledClock(SystemClock::utc(), 60.0); // минута = час
sleep(1);
$fast->now(); // ~минута спустя по виртуальному времени
Анти-паттерны
Неположительный масштаб отклоняется исключением; для остановки времени используйте FrozenClock.
Жизненный цикл
flowchart LR
A[Inner clock] -->|delta| B[ScaledClock]
B -->|delta x scale| C[Virtual moment]
C --> D[Consumer]
Сравнение возможности с аналогами
| Аспект | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Ускорение/замедление времени | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Валидация масштаба исключением | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Точка отсчёта фиксируется при создании | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Композиция с моками для тестов | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Всего | 🏆 4 | 0 | 0 | 0 | 0 | 0 |
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano