WithHandler v1.0.0
Runtime: метаданные #[With]/#[WithItem], handles() и call().
Описание: Статический runtime-хелпер для виртуальных fluent-методов. Строит и кэширует метаданные операций по runtime-классу, проверяет типы дескрипторов и мутирует свойства через closures, привязанные к declaring class.
Namespace: Devcraft\Runtime
С версии: 1.0.0
См. также:
static handles(object $target, string $methodName): bool
Описание: Есть ли виртуальная операция для $methodName (регистронезависимо) на классе $target.
static call(object $target, string $methodName, array $arguments): object
Описание: Выполняет виртуальную операцию и возвращает $target (для chaining).
Параметры:
$target(object): экземпляр с атрибутами$methodName(string): имя виртуального метода$arguments(array): аргументы (set/append— 1;map— 2)
Исключения:
BadMethodCallException— неизвестный методArgumentCountError— неверное число аргументовTypeError— значение не проходит дескрипторLogicException— битая конфигурация / неинициализированный array
Виды операций
| Kind | Источник | Аргументы |
|---|---|---|
set | #[With] | ($value) |
append | #[WithItem] с 1 дескриптором | ($item) |
map | #[WithItem] с 2 дескрипторами | ($key, $value) |
Кэш
Метаданные строятся один раз на class-string и переиспользуются. Writers — closures bound to declaring class, чтобы private-свойства родителей оставались записываемыми.