🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
FrozenClock — orologio congelato
Scopo
Determinismo dei test: il tempo resta fermo finché non viene spostato esplicitamente con setTo()/modify()/advance()/rewind().
A cosa serve e come usarlo
Lo strumento base degli unit test: FrozenClock::from('2026-01-01 00:00:00', 'UTC'); istantanea di un orologio qualsiasi — $clock->freeze().
Esempio
$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-pattern
Non usarlo in produzione: il tempo fermo rompe i TTL e le pianificazioni.
Ciclo di vita
stateDiagram-v2
[*] --> Frozen: from()/fromUtcNow()
Frozen --> Frozen: now() (same moment)
Frozen --> Shifted: advance()/rewind()/modify()/setTo()
Shifted --> Shifted: now() (new fixed moment)
Confronto della funzionalità con gli analoghi
| Aspetto | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Spostamenti espliciti in avanti e indietro | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Modificatori stringa (+1 day) | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Errore tipizzato su input non valido | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
Istantanea da un orologio qualsiasi (freeze()) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Totale | 🏆 4 | 0 | 2 | 0 | 0 | 0 |
← Torna all'elenco delle funzionalità
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano