CloudCastle Clock

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

Deadline — Fristen

Zweck

Ein Paar „Uhr + Ablaufzeitpunkt“: isExpired(), remaining(): TimeSpan, Verlängerung mit extendedBy(). Immutabel.

Wofür und wie zu verwenden

Operations-Timeouts, Gültigkeitsdauer von Token, SLAs: Deadline::after($clock, TimeSpan::ofSeconds(30)); in Tests deterministisch über MockClock.

Beispiel

$deadline = Deadline::after($clock, TimeSpan::ofSeconds(30));
while (!$deadline->isExpired()) {
    $left = $deadline->remaining();   // TimeSpan
    // ... time-bounded work ...
}
$prolonged = $deadline->extendedBy(10.0);

Anti-Patterns

Vergleichen Sie Ablaufzeitpunkte nicht manuell — isExpired() kapselt die Grenze (der Ablaufzeitpunkt selbst gilt bereits als „abgelaufen“).

Lebenszyklus

stateDiagram-v2
    [*] --> Active: after(clock, span) / until(clock, moment)
    Active --> Active: remaining() > 0
    Active --> Expired: clock reaches expiresAt
    Expired --> Active: extendedBy(span)
    Expired --> [*]

Funktionsvergleich mit Konkurrenten

Aspekt🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
An die Uhr gebundene Frist✅❌❌❌❌❌
Verbleibende Zeit als TimeSpan✅❌❌❌❌❌
Immutable Verlängerung✅❌❌❌❌❌
Determinismus in Tests✅❌❌❌❌❌
Gesamt🏆 400000

← Zurück zur Funktionsliste


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