Embracing the Power of PHP 8.0: The Match Expression

Nemanja Milenkovic
3 min readMay 19, 2023

--

This IS NOT a match expression :D
This is a match….. expression will come later.

As a seasoned PHP developer, I’ve seen the language evolve over the years, introducing features that make writing code simpler, more enjoyable, and increasingly expressive. One of the most interesting additions to PHP 8.0 is the match expression, a feature that improves upon the traditional switch statement in numerous ways. Let's dive in to understand the match expression and explore how it can make our code cleaner and more efficient.

The Traditional Switch Statement

Before we get into the new match expression, let's take a quick refresher on the traditional switch statement. Here's a simple example:

function getFruitColor($fruit) {
switch ($fruit) {
case 'apple':
return 'red';
case 'banana':
return 'yellow';
case 'orange':
return 'orange';
default:
return 'unknown';
}
}

Here, we’re defining a function that returns the color of a given fruit. It’s a simple task, but even this can lead to verbose and potentially error-prone code. We need to remember to include a return statement in each case, and if we forget the break keyword in a more complex example, we might encounter unexpected fall-through behavior.

The Match Expression

PHP 8.0’s match expression addresses these pain points, offering a more concise and safer way to handle multiple conditions. Let's see how we could rewrite our previous example using match:

function getFruitColor($fruit) {
return match ($fruit) {
'apple' => 'red',
'banana' => 'yellow',
'orange' => 'orange',
default => 'unknown',
};
}

Immediately, you’ll notice that our function has become more succinct. But it’s not just about saving keystrokes; the match the expression has several advantages over its switch counterpart.

Benefits of the Match Expression

1. No Fall-Through

Unlike switch, match does not support fall-through. Each arm of the match expression is isolated, so you don't have to worry about accidentally omitting a break statement and causing unintended consequences.

2. Strict Type Checking

match uses strict type checking. In a switch statement, PHP would perform loose comparisons, meaning that the strings '1' and '01' would be considered equal. With match, this is not the case, leading to fewer surprises and more robust code.

3. Returns a Value

A match expression always returns a value, making it an expression rather than a statement. This allows us to return the result directly from our function, eliminating the need for a separate return statement for each condition.

4. Supports Multiple Expressions

Finally, match supports multiple comma-separated expressions in a single arm. If you want to match multiple conditions to the same result, you can do so easily:

return match ($fruit) {
'apple', 'strawberry' => 'red',
'banana', 'lemon' => 'yellow',
'orange' => 'orange',
default => 'unknown',
};

Conclusion

The match expression is a powerful addition to PHP 8.0. It offers a cleaner, safer alternative to the traditional switch statement, helping us write more expressive and less error-prone code. As PHP continues to evolve and introduce new features, it's an exciting time to be a PHP developer. Happy coding!

--

--

Nemanja Milenkovic

Web dev expert with 20+ yrs experience. LAMP technologies maestro, adept in PHP, Laravel, Symfony...