🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
FrozenClock — horloge figée
Objectif
Déterminisme des tests : le temps est immobile jusqu’à ce qu’on le déplace explicitement avec setTo()/modify()/advance()/rewind().
Utilité et mode d’emploi
L’outil de base des tests unitaires : FrozenClock::from('2026-01-01 00:00:00', 'UTC') ; capturez un instantané de n’importe quelle horloge avec $clock->freeze().
Exemple
$clock = FrozenClock::from('2026-01-01 00:00:00', 'UTC');
$clock->advance(90.0); // +90 seconds
$clock->modify('+1 day');
$clock->rewind(30.0); // 30 seconds back
Anti-modèles
Ne l’utilisez jamais en production : un temps arrêté casse les TTL et les planifications.
Cycle de vie
stateDiagram-v2
[*] --> Frozen: from()/fromUtcNow()
Frozen --> Frozen: now() (same moment)
Frozen --> Shifted: advance()/rewind()/modify()/setTo()
Shifted --> Shifted: now() (new fixed moment)
Comparaison des fonctionnalités avec les concurrents
| Aspect | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Décalages explicites avant et arrière | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Modificateurs sous forme de chaîne (+1 day) | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Erreur typée sur une entrée invalide | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
Instantané depuis n’importe quelle horloge (freeze()) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Total | 🏆 4 | 0 | 2 | 0 | 0 | 0 |
← Retour à la liste des fonctionnalités
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano