PHP 8: Making the Choice Between “switch” and “match”

PHP8 Match Expression
Photo: Unsplash/@rohit-tandon

In the constantly changing landscape of PHP, version 8 brought with it 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:

With PHP 8, the equivalent match looks far more compact:

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.

Looking for a PHP Developer?

GET IN TOUCH

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.

Looking for Open Source solutions?

Unleash the power of Keestash—a revolution in secure password management. Dive into a world where efficiency meets security, and collaboration is a breeze. Do not let your data float in uncertainty. With Keestash, you’re not just ahead, you’re future-ready in the cloud.
Ready to rethink password management?

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.

Error: Contact form not found.