CloudCastle Clock

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

OffsetClock — reloj con desplazamiento

Propósito

Decorador: «viaje en el tiempo» respecto al reloj interno con un desplazamiento fijo (segundos o DateInterval, con cualquier signo).

Para qué y cómo utilizarlo

Staging «en el futuro» (pruebas de promociones, plazos), compensación de la desincronización con un sistema externo: OffsetClock::aheadBy($clock, 3600.0).

Ejemplo

$tomorrow = OffsetClock::aheadBy(SystemClock::utc(), 86_400.0);
$yesterday = OffsetClock::behindBy(SystemClock::utc(), new DateInterval('P1D'));

Antipatrones

No sirve para el determinismo de las pruebas — dentro sigue habiendo tiempo vivo; para las pruebas use FrozenClock/MockClock.

Ciclo de vida

flowchart LR
    A[Inner clock] -->|now()| B[OffsetClock]
    B -->|+offset| C[Shifted moment]
    C --> D[Consumer]

Comparación de la característica con análogos

Aspecto🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Desplazamiento como decorador sin estado global✅❌❌❌❌❌
Intervalo o segundos, con cualquier signo✅❌❌❌❌❌
Redefinición de la zona horaria de salida✅❌❌❌❌❌
Composición con cualquier reloj del paquete✅❌❌❌❌❌
Total🏆 400000

← A la lista de características


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