🇷🇺 Русский · 🇬🇧 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 | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Instant issu de l’horloge globale | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Erreurs d’analyse typées | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
API DateTimeImmutable complète | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Zéro dépendance d’implémentation | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Total | 🏆 4 | 3 | 3 | 0 | 0 | 0 |
← Retour à la liste des fonctionnalités
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano