CloudCastle Clock

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

Clock — façade statique

Objectif

Des noms courts pour les scénarios courants : Clock::now(), Clock::utc(), Clock::mock(), Clock::frozen(), fabriques de tous les décorateurs. Déclarée comme un enum sans cas — l’instanciation est impossible au niveau du langage.

À quoi ça sert et comment l’utiliser

Scripts simples et migration du legacy vers un temps maîtrisé ; Clock::now('+1 hour') renvoie un DatePoint.

Exemple

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-modèles

Dans le code recourant à l’injection de dépendances, il est préférable d’injecter ClockInterface directement — la façade masque la dépendance.

Cycle de vie

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]

Comparaison de la fonctionnalité avec les concurrents

Aspect🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Point d’entrée unique vers toutes les implémentations✅❌❌❌❌❌
Non instanciable (enum)✅❌❌❌❌❌
now() avec un modificateur → DatePoint✅❌❌❌❌❌
Horloge globale sous le capot✅✅✅❌❌❌
Total🏆 411000

← Retour à la liste des fonctionnalités


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