CloudCastle Clock

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

Clock — statische Fassade

Zweck

Kurze Namen für typische Szenarien: Clock::now(), Clock::utc(), Clock::mock(), Clock::frozen(), Fabriken für alle Dekoratoren. Als fallloses Enum deklariert — eine Instanziierung ist auf Sprachebene ausgeschlossen.

Wofür und wie einzusetzen

Einfache Skripte und die Migration von Legacy-Code zu verwalteter Zeit; Clock::now('+1 hour') gibt einen DatePoint zurück.

Beispiel

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-Muster

In Code mit DI ist es vorzuziehen, die ClockInterface direkt zu injizieren — die Fassade verbirgt die Abhängigkeit.

Lebenszyklus

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]

Funktionsvergleich mit Alternativen

Aspekt🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Einheitlicher Einstiegspunkt zu allen Implementierungen✅❌❌❌❌❌
Nicht instanziierbar (Enum)✅❌❌❌❌❌
now() mit Modifikator → DatePoint✅❌❌❌❌❌
Globale Uhr unter der Haube✅✅✅❌❌❌
Gesamt🏆 411000

← Zurück zur Funktionsliste


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