🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
ScaledClock — Uhr mit Zeitskalierung
Zweck
Dekorator: Die virtuelle Zeit läuft schneller (scale > 1) oder langsamer (scale < 1) als die reale Zeit ab dem Zeitpunkt der Erstellung.
Wofür und wie zu verwenden
Simulationen und Demos: „ein Tag pro Minute", beschleunigte Prüfung von Szenarien mit Zeitplänen.
Beispiel
$fast = new ScaledClock(SystemClock::utc(), 60.0); // a minute becomes an hour
sleep(1);
$fast->now(); // about a minute later in virtual time
Anti-Patterns
Ein nicht positiver Faktor wird mit einer Ausnahme abgelehnt; um die Zeit anzuhalten, verwenden Sie FrozenClock.
Lebenszyklus
flowchart LR
A[Inner clock] -->|delta| B[ScaledClock]
B -->|delta x scale| C[Virtual moment]
C --> D[Consumer]
Funktionsvergleich mit Alternativen
| Aspekt | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Beschleunigen / Verlangsamen der Zeit | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Faktor per Ausnahme validiert | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Bezugspunkt bei Erstellung fixiert | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Komposition mit Mocks für Tests | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Gesamt | 🏆 4 | 0 | 0 | 0 | 0 | 0 |
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano