AdjustableClockInterface
extends
ClockInterface
in
Часы с управляемым временем — для тестов и симуляций.
Позволяют выставить произвольный момент, сдвинуть время вперёд или назад. Продакшн-часы этот контракт не реализуют: управление временем в бою — ошибка дизайна.
Table of Contents
Methods
- advance() : void
- Сдвинуть время вперёд на интервал или число секунд.
- freeze() : AdjustableClockInterface
- Снимок текущего момента: замороженные часы с управляемым временем.
- microtime() : float
- Текущий момент в секундах с дробной микросекундной частью.
- modify() : void
- Сдвинуть время строкой-модификатором формата `DateTimeImmutable::modify()`.
- rewind() : void
- Сдвинуть время назад на интервал или число секунд.
- setTo() : void
- Выставить часы точно на указанный момент.
- timestamp() : int
- Текущий unix-timestamp в секундах.
- timezone() : DateTimeZone
- Таймзона, в которой часы отдают время.
- withTimezone() : static
- Копия часов с другой таймзоной; исходный объект не меняется.
Methods
advance()
Сдвинуть время вперёд на интервал или число секунд.
public
advance(DateInterval|float $duration) : void
Parameters
- $duration : DateInterval|float
-
интервал либо секунды (дробная часть — микросекунды)
Tags
freeze()
Снимок текущего момента: замороженные часы с управляемым временем.
public
freeze() : AdjustableClockInterface
Полезно зафиксировать «сейчас» любых часов — системных, монотонных, декорированных — и дальше детерминированно сдвигать его в тесте.
Return values
AdjustableClockInterface —Снимок текущего момента: замороженные часы с управляемым временем
microtime()
Текущий момент в секундах с дробной микросекундной частью.
public
microtime() : float
Return values
float —секунды с эпохи Unix (аналог microtime(true))
modify()
Сдвинуть время строкой-модификатором формата `DateTimeImmutable::modify()`.
public
modify(non-empty-string $modifier) : void
Parameters
- $modifier : non-empty-string
-
например
+1 day,-2 hours,next monday
Tags
rewind()
Сдвинуть время назад на интервал или число секунд.
public
rewind(DateInterval|float $duration) : void
Parameters
- $duration : DateInterval|float
-
интервал либо секунды (дробная часть — микросекунды)
Tags
setTo()
Выставить часы точно на указанный момент.
public
setTo(DateTimeImmutable $moment) : void
Parameters
- $moment : DateTimeImmutable
-
целевой момент времени
timestamp()
Текущий unix-timestamp в секундах.
public
timestamp() : int
Дешевле, чем now()->getTimestamp(): реализациям разрешено не создавать
объект даты вовсе.
Return values
int —секунды с 1970-01-01T00:00:00Z
timezone()
Таймзона, в которой часы отдают время.
public
timezone() : DateTimeZone
Return values
DateTimeZone —Таймзона, в которой часы отдают время
withTimezone()
Копия часов с другой таймзоной; исходный объект не меняется.
public
withTimezone(DateTimeZone|non-empty-string $timezone) : static
Parameters
- $timezone : DateTimeZone|non-empty-string
-
объект или идентификатор таймзоны (например,
Europe/Moscow)