CloudCastle Clock

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

ClockHolder — globale Uhr mit bereichsbezogener Ersetzung

Zweck

Ein globaler Slot für die Anwendungsuhr: set()/get()/reset() und within($clock, $fn) — eine temporäre Ersetzung mit garantierter Wiederherstellung selbst bei Ausnahmen.

Wofür und wie einzusetzen

Eine Brücke für Code ohne DI und für DatePoint; in Tests isoliert within() die Ersetzung von benachbarten Tests.

Beispiel

$result = ClockHolder::within(
    MockClock::from('2026-01-01 00:00:00', 'UTC'),
    fn () => $service->generateReport(),   // inside, “now” is 2026-01-01
);
// the global clock is restored automatically

Anti-Muster

Globaler Zustand ist ein bewusster Kompromiss: In neuen Services die ClockInterface direkt injizieren.

Lebenszyklus

sequenceDiagram
    participant T as Caller
    participant H as ClockHolder
    T->>H: within(mock, fn)
    H->>H: save previous, set mock
    H->>T: fn() result
    H->>H: restore previous (finally)

Funktionsvergleich mit Alternativen

Aspekt🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Bereichsbezogene Ersetzung mit Auto-Wiederherstellung✅❌✅❌❌❌
Wiederherstellung bei Ausnahme✅❌✅❌❌❌
Systemuhr als Standard, wenn nicht gesetzt✅✅✅❌❌❌
Explizite isSet()/reset()✅❌❌❌❌❌
Gesamt🏆 413000

← Zurück zur Funktionsliste


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