Как использовать выражение соответствия вместо выражения переключения
Мы можем использовать выражение соответствия вместо case в PHP 8.
Как правильно написать выражение соответствия для следующего случая переключения?
switch($statusCode) {
case 200:
case 300:
$message = null;
break;
case 400:
$message = 'not found';
break;
case 500:
$message = 'server error';
break;
default:
$message = 'unknown status code';
break;
}
1 ответ
Решение
$message = match($statusCode) {
200, 300 => null,
400 => 'not found',
500 => 'server error',
default => 'known status code',
};
Есть одна важная вещь, о которой нужно помнить
match
. Он чувствителен к типу, а не как
switch
заявление. Таким образом, очень важно правильно привести переменную. В случае кодов HTTP часто они отправляются в строковом формате, например
"400"
.
Когда мы не знаем об этом, это может доставить много боли во время отладки. Если
$statusCode
была строкой, опция по умолчанию будет вызываться всегда. Моя измененная версия принятого ответа:
$message = match((int) $statusCode) {
200, 300 => null,
400 => 'not found',
500 => 'server error',
default => 'unknown status code',
};