Что такое конструкция match в PHP?

«Что такое конструкция match в PHP?» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

match — это выражение для условного сопоставления, появившееся в PHP 8.0. Оно является более строгой и выразительной альтернативой оператору switch.

Ключевые отличия от switch:

  • Возвращает значение: match — это выражение, результат которого можно присвоить переменной.
  • Строгое сравнение: Используется оператор === (идентично), а не == (равно).
  • Нет проваливания (fall-through): Каждая ветка выполняется независимо, не требуется break.
  • Обязательное совпадение: Если ни одно условие не совпало и не указана ветка default, будет выброшено исключение UnhandledMatchError.

Пример использования:

$httpCode = 404;

$message = match ($httpCode) {
    200, 201 => 'Success',
    301 => 'Moved Permanently',
    404 => 'Not Found',
    500 => 'Internal Server Error',
    default => 'Unknown HTTP Code',
};

echo $message; // Выведет: Not Found

Поддержка выражений в условиях:

$result = match (true) {
    $age < 18 => 'Minor',
    $age >= 18 && $age < 65 => 'Adult',
    default => 'Senior',
};