🇷🇺 Русский · 🇬🇧 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 | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Scadenza legata all'orologio | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Tempo residuo come TimeSpan | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Proroga immutabile | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Determinismo nei test | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Totale | 🏆 4 | 0 | 0 | 0 | 0 | 0 |
← Torna all'elenco delle funzionalità
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano