AbstractWith v1.0.1
Базовый класс fluent-билдеров: WithHandler, затем Lombok\Helper.
Описание: Абстрактный базовый класс для fluent-билдеров. Наследует \Lombok\Helper. Неизвестные вызовы сначала отдаёт в WithHandler (with* / with*Item), иначе в parent::__call() (Lombok get* / set* / is*).
Namespace: Devcraft\Abstracts
Extends: \Lombok\Helper
С версии: 1.0.0 (цепочка Lombok — с 1.0.1)
См. также:
Методы
__call(string $methodName, array $arguments): mixed
Описание: Если WithHandler::handles($this, $methodName) истинно — вызывает WithHandler::call(...) и возвращает результат (обычно $this). Иначе делегирует \Lombok\Helper::__call().
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
$methodName | string | Имя вызванного метода |
$arguments | array | Аргументы вызова |
Возвращает: mixed — результат WithHandler или Lombok
Исключения:
BadMethodCallException— ниWithHandler, ни Lombok не знают метод- Также исключения
WithHandlerи lombok-php
Конструктор и деструктор
Не переопределяются. Их даёт Helper: Lombok::construct($this) / Lombok::destruct($this).
Если наследник объявляет __construct(), вызовите parent::__construct(). Без этого with* работают сразу; Getter/Setter подключаются при первом lombok-вызове.
Пример:
use Lombok\Getter;
use Devcraft\Abstracts\AbstractWith;
use Devcraft\Attributes\With;
use Devcraft\Attributes\WithItem;
#[Getter]
final class Query extends AbstractWith
{
#[With]
private ?int $page = null;
#[With, WithItem('string')]
private array $tags = [];
#[WithItem('string', ['string', 'null'])]
private array $labels = [];
}
$query = (new Query())
->withPage(1)
->withTagsItem('proxy')
->withLabelsItem('status', 'ready');
$query->getPage(); // 1
$query->getTags(); // ['proxy']
$query->getLabels(); // ['status' => 'ready']