🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
QueueClock — Warteschlangen-Uhr
Zweck
Gibt vordefinierte Zeitpunkte nacheinander aus; eine erschöpfte Warteschlange löst eine typisierte Ausnahme aus: ein überzähliger now()-Aufruf wird sofort sichtbar.
Wofür und wie zu verwenden
Präzise Szenarien: „erster Aufruf — 10:00, zweiter — 10:05“. push() füllt die Warteschlange auf, remaining()/isEmpty() dienen der Kontrolle.
Beispiel
$clock = QueueClock::from('2026-01-01 10:00:00', '2026-01-01 10:05:00');
$clock->now(); // 10:00:00
$clock->now(); // 10:05:00
$clock->now(); // InvalidClockValueException: the queue is empty
Anti-Patterns
Nicht für lange Schleifen mit einer unbekannten Anzahl von Lesevorgängen — die Warteschlange ist konstruktionsbedingt endlich.
Lebenszyklus
flowchart LR
A[m1, m2, m3] -->|now| B(m1)
B -->|now| C(m2)
C -->|now| D(m3)
D -->|now| E[/InvalidClockValueException/]
Funktionsvergleich mit Konkurrenten
| Aspekt | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Vordefinierte Sequenz von Zeitpunkten | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ausnahme bei Erschöpfung | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Auffüllen mit push() zur Laufzeit | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Lesen des Kopfs ohne Verbrauch | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Gesamt | 🏆 4 | 0 | 0 | 0 | 0 | 0 |
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano