🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
StepClock — orologio a passi
Scopo
Ogni chiamata a now() sposta il tempo di un passo fisso: una sequenza deterministica di momenti senza advance() manuali.
A cosa serve e come usarlo
Generazione di serie di eventi nei test: marche temporali dei record, intervalli di polling. peek()/timestamp() sbirciano senza spostare.
Esempio
$clock = StepClock::from('2026-01-01 00:00:00', TimeSpan::ofSeconds(10), 'UTC');
$clock->now(); // 00:00:00
$clock->now(); // 00:00:10
$clock->peek(); // 00:00:20 — without advancing
Anti-pattern
Ricorda: fa avanzare solo now(); per «fermarlo» usa un passo pari a zero.
Ciclo di vita
stateDiagram-v2
[*] --> S0: from(start, step)
S0 --> S1: now() → start
S1 --> S2: now() → start+step
S2 --> S3: now() → start+2·step
S1 --> S1: peek()/timestamp() (no advance)
Confronto della funzionalità con gli analoghi
| Aspetto | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
Passo automatico a ogni now() | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
peek() senza avanzamento | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Passo negativo/nullo | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Passo come TimeSpan con precisione al ns | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Totale | 🏆 4 | 0 | 0 | 0 | 0 | 0 |
← Torna all'elenco delle funzionalità
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano