CloudCastle Clock

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

Clock — facciata statica

Scopo

Nomi brevi per gli scenari tipici: Clock::now(), Clock::utc(), Clock::mock(), Clock::frozen(), factory di tutti i decoratori. Realizzata come enum senza casi — l'istanziazione è esclusa a livello di linguaggio.

A cosa serve e come usarlo

Script semplici e migrazione del legacy al tempo controllato; Clock::now('+1 hour') restituisce un DatePoint.

Esempio

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

Anti-pattern

Nel codice con DI è preferibile iniettare ClockInterface direttamente — la facciata nasconde la dipendenza.

Ciclo di vita

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]

Confronto della funzionalità con gli analoghi

Aspetto🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Punto d'ingresso unico a tutte le implementazioni✅❌❌❌❌❌
Impossibilità di istanziazione (enum)✅❌❌❌❌❌
now() con modificatore → DatePoint✅❌❌❌❌❌
Orologio globale sotto il cofano✅✅✅❌❌❌
Totale🏆 411000

← Torna all'elenco delle funzionalità


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