TGViewer
PHP Academy PHP Academy @phpshka · 9.25K subscribers
Post #580 1.85K
Сегодня покажу вам простую, но мощную технику, которая может прокачать ваш 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.

Да, это чуть больше кода. Но это тот случай, когда "больше" — значит надёжнее.
  • 👍 17
  • 🔥 1
More from @phpshka
  1. Sep 15, 2026🐘 Что нового в PHP 8.6 Релиз запланирован на 19 ноября 2026 года, сейчас версия проходит…
  2. Aug 26, 2026💡Совет по Laravel Знаешь ли ты, что можно выбрасывать исключения условно всего в одну стр…
  3. Aug 26, 2026Приглашаем на курс для прокачки навыков архитектора и проектировщика, которые важны для пр…
  4. Aug 25, 2026Сегодня хочу рассказать вам про одну ошибку, которую я часто встречаю у начинающих PHP-раз…
  5. Aug 22, 2026🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажет…
  6. Aug 17, 2026Сегодня я покажу вам, как удобно логировать в Laravel, не засоряя код и не превращая проек…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →