CloudCastle Clock

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

Deadline — scadenze

Scopo

Coppia «orologio + momento di scadenza»: isExpired(), remaining(): TimeSpan, proroga con extendedBy(). Immutabile.

A cosa serve e come usarlo

Timeout delle operazioni, durata di validità dei token, SLA: Deadline::after($clock, TimeSpan::ofSeconds(30)); nei test è deterministico tramite MockClock.

Esempio

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

Anti-pattern

Non confrontare manualmente i momenti di scadenza — isExpired() incapsula il limite (il momento di scadenza è già «scaduto»).

Ciclo di vita

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

Confronto della funzionalità con gli analoghi

Aspetto🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Scadenza legata all'orologio✅❌❌❌❌❌
Tempo residuo come TimeSpan✅❌❌❌❌❌
Proroga immutabile✅❌❌❌❌❌
Determinismo nei test✅❌❌❌❌❌
Totale🏆 400000

← Torna all'elenco delle funzionalità


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