Оператор match — удобный способ работы с условными конструкциями, который появился начиная с PHP 8.0. Этот оператор представляет собой улучшенную версию switch, предлагая более читаемый и компактный синтаксис для выполнения выражений на основе совпадения значений. Оператор match особенно полезен, когда нужно присвоить значение переменной на основе какого-либо условия или когда необходимо выполнить простое ветвление логики без громоздкого использования множественных if или switch.
Оператор match сравнивает значение с различными вариантами и, в случае нахождения совпадения, возвращает соответствующее выражение. Отличительной чертой является то, что match делает строгое сравнение (===), в отличие от switch, который использует нестрогое сравнение (==).
match возвращение значения непосредственно из ветки совпадения.
Пример использования:
# В зависимости от значения $userRole, match возвращает соответствующее сообщение
# Если значение не совпадает ни с одним из случаев, используется вариант default
$userRole = 'admin';
$message = match ($userRole) {
'admin' => 'У вас есть доступ ко всем функциям.',
'manager' => 'У вас есть доступ к управлению заказами и пользователями.',
'user' => 'У вас есть доступ к базовым функциям.',
default => 'Ваша роль не определена в системе.',
};
echo $message;
Ещё пример:
# Функция, которая определяет уровень доступа пользователя к определённой странице или функционалу
# в зависимости от его возраста и стажа работы
function getAccessLevel(int $age, int $experienceYears): string
{
return match (true) {
$age >= 18 && $experienceYears >= 5 => 'Полный доступ',
$age >= 18 => 'Ограниченный доступ',
default => 'Доступ запрещён',
};
}
# Вызов функции с различными параметрами
echo getAccessLevel(20, 6);
# > Полный доступ
echo getAccessLevel(19, 2);
# > Ограниченный доступ
echo getAccessLevel(17, 4);
# > Доступ запрещён
Комментарии
0Нашли ошибку или хотите дополнить материал?