🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
SystemClock — reloj del sistema
Propósito
Fuente de tiempo para producción: devuelve el tiempo real del SO en una zona horaria fija. El camino caliente now() es lo más económico posible; timestamp()/microtime() no crean objetos en absoluto.
Para qué y cómo usarlo
Inyéctelo mediante ClockInterface en todos los servicios que necesiten «ahora»: registro, TTL, horarios. Fábricas: SystemClock::utc() (con caché), SystemClock::system(), SystemClock::fromTimezone($tz).
Ejemplo
$clock = SystemClock::utc();
$moment = $clock->now(); // DateTimeImmutable in UTC
$unix = $clock->timestamp(); // int, no date object
$fine = $clock->microtime(); // float with microseconds
Antipatrones
No lo llame de forma estática en lo profundo de la lógica de negocio — pase la interfaz, de lo contrario las pruebas no podrán sustituir el tiempo.
Ciclo de vida
stateDiagram-v2
[*] --> Created: utc()/system()/fromTimezone()
Created --> Reading: now()/timestamp()/microtime()
Reading --> Reading: repeat
Created --> Frozen: freeze()
Frozen --> [*]
Comparación de la característica con alternativas
| Aspecto | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Zona horaria fija y explícita | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| Instancia UTC en caché | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| Marca de tiempo sin objeto de fecha | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| sleep()/sleepUntil() reales | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Total | 🏆 4 | 2 | 1 | 1 | 1 | 1 |
← Volver a la lista de características
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano