Košík je prázdný

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.