PHP 8: Making the Choice Between “switch” and “match”
In the constantly changing landscape of PHP, version 8 brought an innovative feature: the match
expression. Many see it as a streamlined and more effective counterpart to the traditional switch
. Let’s explore their distinctions.
The traditional switch
goes something like this:
<?php
$statusCode = 200;
$message = "";
switch ($statusCode) {
case 200:
$message = "OK";
break;
case 500:
$message = "Internal Server Error";
break;
case 404:
$message = "Not Found";
break;
default:
$message = "Unknown Status Code";
break;
}
With PHP 8, the equivalent match
looks far more compact:
<?php
$statusCode = 200;
$message = match($statusCode){
200 => "OK",
500 => "Internal Server Error",
404 => "Not Found",
default => "Unknown Status Code"
};
At a glance, the benefits of using match
are clear:
- No need for
break
statements. - Ability to merge different conditions with just a comma.
- Returns a value directly, making assignments more straightforward.
But that’s just scratching the surface.
Type Strictness: Unlike switch
, the match
expression is strict with types; akin to using ===
over ==
.
Error Handling: Missing a value without a default
in match
? PHP will alert you with an UnhandledMatchError
.
Simplicity: match
offers a clear, singular expression. While fallthrough conditions (multiple lines combining into a single result) as in switch
are not directly possible, you can merge conditions in match
using commas, achieving similar results with less room for error. If complex logic is needed, make it a function or method that is called.
Performance: match
is not just about aesthetics; it’s efficient. Unlike some patterns that evaluate all conditions before providing an outcome, match
does it more smartly, ensuring better performance.
Exception Handling: With PHP 8’s throw expressions, you can directly throw exceptions from within a match
arm.
Conclusion
While switch
has its place, especially when dealing with multiline code blocks, match
seems to be its evolved, stricter sibling. Given its strictness, efficiency, and potential future capabilities, match
is shaping up to be a worthy contender for many PHP developers. For someone like me who hasn’t used switch
recently due to its quirks, match
is an exciting addition that might just be the perfect… match
.
Need a PHP Developer?
Discover the Power of Expert PHP Development. Elevate your digital projects with precision, innovation, and a commitment to excellence. Partner with a seasoned PHP developer who understands your vision. Let’s shape the future together. Reach out today: https://www.dogan-ucar.de/
originally posted on my personal blog: https://www.dogan-ucar.de/php-8-making-the-choice-between-switch-and-match/