CloudCastle Clock

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

SystemClock — системные часы

Назначение

Продакшн-источник времени: отдаёт реальное время ОС в фиксированной таймзоне. Горячий путь now() максимально дёшев, timestamp()/microtime() не создают объектов вовсе.

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

Внедряйте через ClockInterface во все сервисы, которым нужно «сейчас»: журналирование, TTL, расписания. Фабрики: SystemClock::utc() (кэшируется), SystemClock::system(), SystemClock::fromTimezone($tz).

Пример

$clock = SystemClock::utc();
$moment = $clock->now();          // DateTimeImmutable в UTC
$unix = $clock->timestamp();      // int, без объекта даты
$fine = $clock->microtime();      // float с микросекундами

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

Не вызывайте статически в глубине бизнес-логики — прокидывайте интерфейс, иначе тесты не смогут подменить время.

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

stateDiagram-v2
    [*] --> Created: utc()/system()/fromTimezone()
    Created --> Reading: now()/timestamp()/microtime()
    Reading --> Reading: repeat
    Created --> Frozen: freeze()
    Frozen --> [*]

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

Аспект🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Фиксированная явная таймзона✅✅✅✅❌✅
Кэш экземпляра UTC✅❌❌❌✅❌
Метка времени без объекта даты✅❌❌❌❌❌
Реальный sleep()/sleepUntil()✅✅❌❌❌❌
Всего🏆 421111

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


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