CloudCastle Clock

🇷🇺 Русский · 🇬🇧 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🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Passo automatico a ogni now()✅❌❌❌❌❌
peek() senza avanzamento✅❌❌❌❌❌
Passo negativo/nullo✅❌❌❌❌❌
Passo come TimeSpan con precisione al ns✅❌❌❌❌❌
Totale🏆 400000

← Torna all'elenco delle funzionalità


🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano