TGViewer
Пых Пых @phpyh · 7.87K subscribers
Post #890 8.36K
Убираем null?

В конце месяца совместно с Garage Eight и Live PHP делаем митап в Санкт-Петербурге. Регистрация откроется через неделю.

В числе спикеров отчаянный борец против nullВладимир Романичев.

Вчера мы прогоняли его доклад, а сегодня я кидаю вам пример рефакторинга своего кода...

Было

final class Context
{
/**
* @var array<non-empty-lowercase-string, Name>
*/
private array $uses = [];

public function __construct(
public readonly ?Name $namespace = null,
) {}

public function use(Name $name, ?Name $as = null): self
{
$context = clone $this;
$context->uses[($as ?? $name->last())->toLowercaseString()] = $name;

return $context;
}
}


Стало

final class Context
{
// ...

public function use(Name $name): self
{
return $this->useAs($name, $name->last());
}

public function useAs(Name $name, Name $as): self
{
$context = clone $this;
$context->uses[$as->toLowercaseString()] = $name;

return $context;
}
}


Я не считаю null абсолютным злом, тем более, что в PHP он явный, но иногда действительно можно сделать красивее без него.
  • 👍 37
  • 🥴 34
  • ❤ 13
  • 🔥 12
  • 👎 5
  • 🤔 5
  • 🤡 4
More from @phpyh
  1. Sep 15, 2026Сейчас один человек с AI может выполнять работу целого IT-отдела. Только хуёво
  2. Sep 12, 2026Спасибо за заявки! Всем напишу в понедельник. Осталось 1 место.
  3. Sep 11, 2026Хардкорный курс асинхронного PHP https://hardcourse.ru/php/async
  4. Sep 11, 2026Ещё полчасика надо — сайт готов, расписываю программу! 🙏
  5. Sep 10, 2026Краткое содержание: завтра в 12:00 открываю набор на Хардкорный курс асинхронного PHP с уч…
  6. Sep 10, 2026Post #1011
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 →