CloudCastle Clock API

CalendarMacrosTrait

Макросы календарной даты (аналог `Carbon::macro()`): расширение API собственными методами без наследования финального класса.

Макрос получает дату первым аргументом, поэтому работают и static-замыкания, а $this не переприсваивается. Объявленные методы макросом не перекрываются — PHP вызывает их напрямую, до __call(). Для кода под строгим статанализом есть типобезопасный вызов callMacro().

Tags
psalm-require-extends

DateTimeImmutable

Table of Contents

Methods

__call()  : mixed
Вызов макроса как метода: `$date->addBusinessDays(3)`.
callMacro()  : mixed
Явный вызов макроса — без магии, видимый статическим анализаторам.
flushMacros()  : void
Удалить все зарегистрированные макросы.
hasMacro()  : bool
Зарегистрирован ли макрос с таким именем.
macro()  : void
Зарегистрировать (или заменить) макрос.

Methods

__call()

Вызов макроса как метода: `$date->addBusinessDays(3)`.

public __call(string $name, array<string|int, mixed> $arguments) : mixed
Parameters
$name : string

имя вызванного метода

$arguments : array<string|int, mixed>

аргументы вызова

Tags
throws
UnknownMacroException

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

Return values
mixed —

результат макроса

callMacro()

Явный вызов макроса — без магии, видимый статическим анализаторам.

public callMacro(string $name, mixed ...$arguments) : mixed
Parameters
$name : string

имя макроса

$arguments : mixed

аргументы после даты

Tags
throws
UnknownMacroException

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

Return values
mixed —

результат макроса

flushMacros()

Удалить все зарегистрированные макросы.

public static flushMacros() : void

hasMacro()

Зарегистрирован ли макрос с таким именем.

public static hasMacro(string $name) : bool
Parameters
$name : string

имя метода

Return values
bool —

макрос зарегистрирован

macro()

Зарегистрировать (или заменить) макрос.

public static macro(non-empty-string $name, Closure $macro) : void
Parameters
$name : non-empty-string

имя метода, под которым макрос будет доступен

$macro : Closure

замыкание fn (CalendarDate $date, mixed ...$args): mixed

On this page

Search results