🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
OffsetClock — Uhr mit Versatz
Zweck
Dekorator: „Zeitreise" relativ zur inneren Uhr um einen festen Versatz (Sekunden oder DateInterval, beliebiges Vorzeichen).
Wofür und wie zu verwenden
Staging „in der Zukunft" (Test von Aktionen und Fristen), Ausgleich der Abweichung gegenüber einem externen System: OffsetClock::aheadBy($clock, 3600.0).
Beispiel
$tomorrow = OffsetClock::aheadBy(SystemClock::utc(), 86_400.0);
$yesterday = OffsetClock::behindBy(SystemClock::utc(), new DateInterval('P1D'));
Anti-Patterns
Nicht für den Test-Determinismus — im Inneren läuft die Zeit weiterhin; verwenden Sie für Tests FrozenClock/MockClock.
Lebenszyklus
flowchart LR
A[Inner clock] -->|now()| B[OffsetClock]
B -->|+offset| C[Shifted moment]
C --> D[Consumer]
Funktionsvergleich mit Alternativen
| Aspekt | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Versatz als Dekorator ohne globalen Zustand | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Intervall oder Sekunden, beliebiges Vorzeichen | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Überschreiben der Ausgabe-Zeitzone | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Komposition mit beliebigen Uhren des Pakets | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Gesamt | 🏆 4 | 0 | 0 | 0 | 0 | 0 |
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano