Skip to content

Configuration

github-actions[bot] edited this page Jul 14, 2026 · 1 revision

Конфигурация

Пакет cloudcastle/clock работает сразу после установки — глобальной конфигурации нет намеренно: всё поведение задаётся выбором класса часов и параметрами конструкторов.

Точки настройки

Что настраивается Где Пример
Таймзона часов фабрики/конструкторы SystemClock::fromTimezone('Europe/Moscow')
Таймзона выдачи любых часов withTimezone() $clock->withTimezone('UTC')
Часы приложения по умолчанию ClockHolder::set() в bootstrap ClockHolder::set(SystemClock::utc())
Смещение времени OffsetClock OffsetClock::aheadBy($clock, 86_400.0)
Масштаб времени ScaledClock new ScaledClock($clock, 60.0)
Границы усечения TruncatingClock + TruncationUnit new TruncatingClock($clock, TruncationUnit::Day)
Часы в сервисе ClockAwareTrait::setClock() сеттер-инъекция из DI

Рекомендуемый bootstrap приложения

use CloudCastle\Clock\ClockHolder;
use CloudCastle\Clock\SystemClock;

// Одна строка в точке входа: дальше время читается через ClockHolder/Clock.
ClockHolder::set(SystemClock::utc());

Рекомендуемый bootstrap тестов

use CloudCastle\Clock\ClockHolder;
use CloudCastle\Clock\MockClock;

protected function setUp(): void
{
    ClockHolder::set(MockClock::from('2026-01-01 00:00:00', 'UTC'));
}

protected function tearDown(): void
{
    ClockHolder::reset(); // изоляция: время не утекает между тестами
}

Clone this wiki locally