Switch vs Match
// switch — нестрого, fall-through, не повертає
switch ($status) {
case 'active': $label = 'Active'; break;
case 'banned': $label = 'Banned'; break;
default: $label = 'Unknown';
}
// match — строго, без fall-through, повертає
$label = match($status) {
'active' => 'Active',
'banned' => 'Banned',
'pending', 'unverified' => 'Waiting', // кілька умов
default => 'Unknown',
};
Переваги
- Суворе порівняння:
match(0) ≠ match('foo')
- Якщо немає збігу і немає
default — кидається UnhandledMatchError
- Компактніший, читабельніший код