🇷🇺 Русский · 🇬🇧 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 | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| 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 | 🏆 4 | 0 | 0 | 0 | 0 | 0 |
← A la lista de características
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano