🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
DatePoint — momento del reloj de la aplicación
Propósito
Una subclase de DateTimeImmutable: new DatePoint() toma el «ahora» del reloj global (ClockHolder); los errores de análisis son excepciones tipadas en lugar de false con un warning.
Para qué y cómo usarlo
Un reemplazo de new DateTimeImmutable() en código que debe ser testeable: los momentos obedecen automáticamente al reloj sustituido.
Ejemplo
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
Antipatrones
En los servicios con DI es preferible un ClockInterface explícito; DatePoint es un puente para el código sin inyección.
Ciclo de vida
flowchart LR
A[ClockHolder] -->|now| B[new DatePoint]
B --> C[DateTimeImmutable API]
B -->|modify/createFromFormat errors| D[/InvalidClockValueException/]
Comparación de la característica con alternativas
| Aspecto | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Momento del reloj global | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Errores de análisis tipados | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
API completa de DateTimeImmutable | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Cero dependencias de implementación | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Total | 🏆 4 | 3 | 3 | 0 | 0 | 0 |
← Volver a la lista de características
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano