CloudCastle Clock

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

Deadline — fechas límite

Propósito

Un par «reloj + momento de expiración»: isExpired(), remaining(): TimeSpan, prórroga con extendedBy(). Inmutable.

Para qué y cómo usarlo

Tiempos de espera de operaciones, vigencia de tokens, SLA: Deadline::after($clock, TimeSpan::ofSeconds(30)); en las pruebas es determinista mediante MockClock.

Ejemplo

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

Antipatrones

No compares los momentos de expiración manualmente — isExpired() encapsula el límite (el propio momento de expiración ya está «expirado»).

Ciclo de vida

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

Comparación de la característica con alternativas

Aspecto🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Fecha límite ligada al reloj✅❌❌❌❌❌
Tiempo restante como TimeSpan✅❌❌❌❌❌
Prórroga inmutable✅❌❌❌❌❌
Determinismo en las pruebas✅❌❌❌❌❌
Total🏆 400000

← Volver a la lista de características


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