Сегодня покажу вам простую, но мощную технику, которая может прокачать ваш PHP-код — Value Object вместо простых типов.



Мы часто передаём параметры как string, int, array. Всё просто и понятно. Но как только бизнес-логика усложняется — типы начинают нас подводить.

Допустим, у вас есть метод:

function sendSms(string $phoneNumber, string $message): void

А теперь скажите честно — сколько раз вы ловили себя на том, что phoneNumber передаётся в неправильном формате? Или вовсе пустым? Или из другой страны, а вы это не предусмотрели?

Вот тут и приходят на помощь Value Object'ы:

final class PhoneNumber
{
public function __construct(private string $number)
{
if (!preg_match('/^\+7\d{10}$/', $number)) {
throw new InvalidArgumentException('Invalid phone number');
}
}

public function value(): string
{
return $this->number;
}
}


Теперь ваш метод будет выглядеть так:

function sendSms(PhoneNumber $phoneNumber, Message $message): void

Что мы получаем:
- Валидность данных гарантируется на этапе создания объекта.
- Код становится самодокументируемым — не нужно читать описание, чтобы понять, что именно сюда передаётся.
- IDE и статическая проверка типа не дадут случайно передать email вместо phone.

Да, это чуть больше кода. Но это тот случай, когда "больше" — значит надёжнее.

👉 @php_lib
Просмотры: 1 294
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти