CloudCastle Clock

🇷🇺 Русский · 🇬🇧 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🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Zona horaria fija y explícita✅✅✅✅❌✅
Instancia UTC en caché✅❌❌❌✅❌
Marca de tiempo sin objeto de fecha✅❌❌❌❌❌
sleep()/sleepUntil() reales✅✅❌❌❌❌
Total🏆 421111

← Volver a la lista de características


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