DevCraft Документации
СправочникАбстрактные классы

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().

Параметры:

ПараметрТипОписание
$methodNamestringИмя вызванного метода
$argumentsarrayАргументы вызова

Возвращает: 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']

На этой странице