🇷🇺 Русский · 🇬🇧 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 | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Point d’entrée unique vers toutes les implémentations | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Non instanciable (enum) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
now() avec un modificateur → DatePoint | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Horloge globale sous le capot | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Total | 🏆 4 | 1 | 1 | 0 | 0 | 0 |
← Retour à la liste des fonctionnalités
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano