TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #6387 2.18K
📊 match vs switch

Два инструмента, которые делают похожие вещи, но не одинаковые — и разница не стилистическая.

— switch использует нестрогое сравнение (==)
— match использует строгое (===) и является выражением

Вот классический баг, который живёт в каждом втором легаси-проекте:

$status = "0";

switch ($status) {
case 0: // "0" == 0 → true. Вот и приехали.
handleInactive();
break;
case "active":
handleActive();
break;
}


match решает это без магии:

$label = match($code) {
200, 201 => 'success',
301, 302 => 'redirect',
404 => 'not_found',
default => 'unknown',
};


Несколько значений на один arm можно указать через запятую. Результат — значение, не сайд-эффект. Можно прямо в return или аргумент функции.

Про UnhandledMatchError: match без default бросает исключение, если значение не попало ни в один arm. switch молча пропускает. Это не недостаток match — это контракт. Явный фейл лучше тихого игнорирования.

🔹 Когда всё-таки switch:

— нужен fallthrough осознанно
— легаси на PHP 7
— в arm несколько выражений подряд, а не одно возвращаемое значение

Выбор инструмента — это не про стиль. Это про то, какие гарантии тебе нужны от кода.

🐸 Библиотека пхпшника

#элементарный_выбор
  • 👍 9
  • 🔥 3
More from @phpproglib
  1. Sep 21, 2026⚡️ PHP 8.6 выйдет 19 ноября 2026 года. Сейчас версия находится в beta. Самые заметные изме…
  2. Sep 20, 2026❓ Какие существуют проблемы в многопоточной среде? Основные проблемы многопоточности: 1️⃣…
  3. Sep 19, 2026🌞 В Symfony 8.2 появилось 29 новых Bundle — теперь компоненты вроде Mailer, Messenger и C…
  4. Sep 19, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  5. Sep 18, 2026🐸 Библиотека пхпшника
  6. Sep 17, 2026🛠 `str_contains` и семья: проверяем строки без ловушек Проверка через strpos годами путал…
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 →