@NewSantaClaus

Как лучше организовать типизацию входных параметров метода?

Есть класс

class Test
{
    protected int $Columns ;

    protected string $Color;

    protected string $TextHAlign;

    public function setColumns(int $columns = 6): self
    {
        $this->Columns = $columns;
        return $this;
    }

    public function setColor(string $color): self
    {
        $this->Color = $color;
        return $this;
    }

    public function setTextHAlign(string $HAlign = "center"): self
    {
        $this->TextHAlign = $HAlign;
        return $this;
    }
}


Метод setColumns - должен принимать значение от 1 до 6
Метод setColor - должен принимать только HEX формат
Метод setTextHAlign - должен иметь одно из значений "left", "center" или "right"

Вопрос. Возможно ли сделать типизацию (если да то как), возможно как-то принимать только определенные константы, или нужно писать проверки внутри каждого метода?
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
Для перечислений можно использовать Enum, это подойдёт для TextAlign.
Для других кейсов можно использовать ValueObject с валидацией в конструкторе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
dima9595
@dima9595
Junior PHP
Как вариант можно сделать константы со списком необходимых параметров для каждого метода. Но это добавит в каждый ваш метод класса небольшую проверку в ~1 строку.
Ответ написан
Комментировать
К выше сказанному добавлю ещё - обратите внимание на filter_var/filter_var_array (может пригодится).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы