PHP 8 přináší mnoho novinek a vylepšení, mezi které patří i nový jazykový konstrukt - match expression. Tento článek podrobně rozebere syntaxi, výhody a praktické použití match expression v PHP 8.
Syntaxe match expression
Match expression je v PHP 8 konstrukce, která umožňuje jednodušší a čitelnější způsob porovnávání hodnot oproti tradičnímu switch statementu. Základní syntaxi lze popsat následovně:
$result = match($variable) {
value1 => result1,
value2 => result2,
default => defaultResult,
};
Hlavní rozdíly oproti switch statementu zahrnují:
- Návratovou hodnotu: match expression vrací hodnotu, kterou lze přiřadit do proměnné.
- Přísná kontrola typu: match expression používá strict type comparison (===).
- Implicitní break: není potřeba používat break statement, každý případ je ohraničen šipkou (=>).
Výhody match expression
Čistší a čitelnější kód: Konstrukce match expression zajišťuje přehlednější kód bez nutnosti psát break statementy a umožňuje přímé přiřazení hodnoty.
Strict type comparison: Narozdíl od switch statementu, který používá loose comparison (==), match expression používá strict comparison (===), což zajišťuje přesnější a bezpečnější porovnávání.
Výrazová syntaxe: Match expression může být použit jako součást výrazů, což znamená, že lze přiřazovat hodnoty nebo volat funkce přímo v rámci porovnávacích případů.
Praktické použití
Pro lepší pochopení si ukážeme několik praktických příkladů, jak match expression používat.
Jednoduchý příklad
$status = 200;
$message = match($status) {
200 => 'OK',
404 => 'Not Found',
500 => 'Internal Server Error',
default => 'Unknown Status Code',
};
echo $message; // Výstup: OK
Použití s funkcemi
function getStatusMessage(int $status): string {
return match($status) {
200 => 'OK',
404 => 'Not Found',
500 => 'Internal Server Error',
default => 'Unknown Status Code',
};
}
echo getStatusMessage(404); // Výstup: Not Found
Složitější logika
$userRole = 'admin';
$permissions = match($userRole) {
'admin' => ['create', 'read', 'update', 'delete'],
'editor' => ['create', 'read', 'update'],
'viewer' => ['read'],
default => [],
};
print_r($permissions); // Výstup: Array ( [0] => create [1] => read [2] => update [3] => delete )
Porovnávání s více hodnotami
$input = 42;
$output = match(true) {
$input < 10 => 'Small',
$input >= 10 && $input <= 50 => 'Medium',
$input > 50 => 'Large',
default => 'Unknown Size',
};
echo $output; // Výstup: Medium
Match expression v PHP 8 přináší výrazné zjednodušení a zpřehlednění kódu pro případy, kdy je potřeba provádět různé akce na základě hodnot proměnných. Díky strictnímu porovnávání a možnosti přiřazení návratové hodnoty se stává match expression silným nástrojem pro vývojáře, kteří chtějí psát čistý a udržovatelný kód.