CloudCastle Clock API

AdjustableClockInterface extends ClockInterface

Часы с управляемым временем — для тестов и симуляций.

Позволяют выставить произвольный момент, сдвинуть время вперёд или назад. Продакшн-часы этот контракт не реализуют: управление временем в бою — ошибка дизайна.

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
throws
InvalidClockValueException

при отрицательных секундах

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
throws
InvalidClockValueException

если модификатор не распознан

rewind()

Сдвинуть время назад на интервал или число секунд.

public rewind(DateInterval|float $duration) : void
Parameters
$duration : DateInterval|float

интервал либо секунды (дробная часть — микросекунды)

Tags
throws
InvalidClockValueException

при отрицательных секундах

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)

Tags
throws
InvalidClockValueException

если идентификатор таймзоны не распознан

Return values
static
On this page

Search results