CloudCastle Clock

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

StepClock — шаговые часы

Назначение

Каждый вызов now() сдвигает время на фиксированный шаг: детерминированная последовательность моментов без ручных advance().

Для чего и как применять

Генерация серий событий в тестах: временные метки записей, интервалы поллинга. peek()/timestamp() подсматривают без сдвига.

Пример

$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 — без продвижения

Анти-паттерны

Помните: продвигает только now(); для «остановки» используйте нулевой шаг.

Жизненный цикл

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)

Сравнение возможности с аналогами

Аспект🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Автошаг при каждом now()✅❌❌❌❌❌
peek() без продвижения✅❌❌❌❌❌
Отрицательный/нулевой шаг✅❌❌❌❌❌
Шаг как TimeSpan с нс-точностью✅❌❌❌❌❌
Всего🏆 400000

← К списку возможностей


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