CloudCastle Clock

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

FrozenClock — eingefrorene Uhr

Zweck

Determinismus in Tests: Die Zeit steht still, bis sie explizit mit setTo()/modify()/advance()/rewind() verschoben wird.

Wofür und wie einzusetzen

Das grundlegende Werkzeug für Unit-Tests: FrozenClock::from('2026-01-01 00:00:00', 'UTC'); ein Schnappschuss beliebiger Uhren über $clock->freeze().

Beispiel

$clock = FrozenClock::from('2026-01-01 00:00:00', 'UTC');
$clock->advance(90.0);            // +90 seconds
$clock->modify('+1 day');
$clock->rewind(30.0);             // 30 seconds back

Anti-Patterns

Niemals in der Produktion verwenden: angehaltene Zeit zerstört TTLs und Zeitpläne.

Lebenszyklus

stateDiagram-v2
    [*] --> Frozen: from()/fromUtcNow()
    Frozen --> Frozen: now() (same moment)
    Frozen --> Shifted: advance()/rewind()/modify()/setTo()
    Shifted --> Shifted: now() (new fixed moment)

Funktionsvergleich mit Konkurrenten

Aspekt🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Explizite Verschiebungen vorwärts und rückwärts✅❌❌❌❌❌
String-Modifikatoren (+1 day)✅❌✅❌❌❌
Typisierter Fehler bei ungültiger Eingabe✅❌✅❌❌❌
Schnappschuss aus beliebiger Uhr (freeze())✅❌❌❌❌❌
Gesamt🏆 402000

← Zurück zur Funktionsliste


🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano