CloudCastle Clock

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

Clock — fachada estática

Propósito

Nombres cortos para escenarios habituales: Clock::now(), Clock::utc(), Clock::mock(), Clock::frozen(), fábricas de todos los decoradores. Declarada como un enum sin casos — la instanciación queda excluida a nivel del lenguaje.

Para qué y cómo usarlo

Scripts sencillos y migración de código heredado a tiempo controlado; Clock::now('+1 hour') devuelve un DatePoint.

Ejemplo

Clock::now();                       // current moment of the global clock
Clock::utc()->timestamp();
Clock::step('2026-01-01', 5.0);     // StepClock
Clock::queue('10:00', '10:05');     // QueueClock
Clock::adapt($psrClock);            // PsrClockAdapter

Antipatrones

En código con DI es preferible inyectar ClockInterface directamente — la fachada oculta la dependencia.

Ciclo de vida

flowchart TD
    F[Clock facade] --> A[system/utc/inZone]
    F --> B[frozen/mock/monotonic]
    F --> C[offset/scaled/truncatedTo]
    F --> D[step/queue/adapt]
    F --> E[now → ClockHolder]

Comparación de la característica con alternativas

Aspecto🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Punto de entrada único a todas las implementaciones✅❌❌❌❌❌
Imposibilidad de instanciación (enum)✅❌❌❌❌❌
now() con un modificador → DatePoint✅❌❌❌❌❌
Reloj global bajo el capó✅✅✅❌❌❌
Total🏆 411000

← Volver a la lista de características


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