CloudCastle Clock

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

StepClock — horloge à pas

Objectif

Chaque appel à now() décale le temps d’un pas fixe : une séquence déterministe d’instants sans advance() manuel.

À quoi ça sert et comment l’utiliser

Génération de séries d’événements dans les tests : horodatages des enregistrements, intervalles de scrutation. peek()/timestamp() observent sans faire avancer.

Exemple

$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-modèles

Rappel : seul now() fait avancer ; utilisez un pas nul pour « arrêter ».

Cycle de vie

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)

Comparaison des fonctionnalités avec les concurrents

Aspect🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Pas automatique à chaque now()✅❌❌❌❌❌
peek() sans faire avancer✅❌❌❌❌❌
Pas négatif/nul✅❌❌❌❌❌
Pas sous forme de TimeSpan à précision nanoseconde✅❌❌❌❌❌
Total🏆 400000

← Retour à la liste des fonctionnalités


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