CloudCastle Clock

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

DatePoint — instant issu de l’horloge applicative

Objectif

Une sous-classe de DateTimeImmutable : new DatePoint() prend « maintenant » depuis l’horloge globale (ClockHolder) ; les erreurs d’analyse deviennent des exceptions typées au lieu de false accompagné d’un warning.

À quoi ça sert et comment l’utiliser

Un remplacement direct de new DateTimeImmutable() dans le code qui doit rester testable : les instants suivent automatiquement l’horloge substituée.

Exemple

ClockHolder::set(MockClock::from('2026-01-01 00:00:00', 'UTC'));
$point = new DatePoint();                 // 2026-01-01 from the mock clock
$later = new DatePoint('+1 hour');
DatePoint::createFromFormat('Y-m-d', 'garbage');  // typed exception

Anti-modèles

Avec l’injection de dépendances, préférez un ClockInterface explicite ; DatePoint est un pont pour le code dépourvu d’injection.

Cycle de vie

flowchart LR
    A[ClockHolder] -->|now| B[new DatePoint]
    B --> C[DateTimeImmutable API]
    B -->|modify/createFromFormat errors| D[/InvalidClockValueException/]

Comparaison de la fonctionnalité avec les concurrents

Aspect🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Instant issu de l’horloge globale✅✅✅❌❌❌
Erreurs d’analyse typées✅✅✅❌❌❌
API DateTimeImmutable complète✅✅✅❌❌❌
Zéro dépendance d’implémentation✅❌❌❌❌❌
Total🏆 433000

← Retour à la liste des fonctionnalités


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