🇷🇺 Русский · 🇬🇧 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 | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
Pas automatique à chaque now() | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
peek() sans faire avancer | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Pas négatif/nul | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Pas sous forme de TimeSpan à précision nanoseconde | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Total | 🏆 4 | 0 | 0 | 0 | 0 | 0 |
← Retour à la liste des fonctionnalités
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano