Re: [RFC] Pattern Matching

From: Date: Sun, 25 Jan 2026 18:44:29 +0000
Subject: Re: [RFC] Pattern Matching
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-129920@lists.php.net to get a copy of this message
On Sat, Jan 24, 2026, at 12:25 PM, Tim Düsterhus wrote: > Hi > > Am 2026-01-23 20:48, schrieb Larry Garfield: >> The idea of the second being that, if you want just an identity match, >> you can skip adding is on just that one arm. > > I don't understand what that is trying to say. With a per-arm keyword, one could do this: $result = match ($somevar) { is Foo => 'foo', // This matches against the pattern Foo, which is a class name. Bar => 'bar', // This matches === against the constant Bar, whose value is whatever. }; The main reason we cannot just auto-detect whether it's a pattern is the confusion between a class name and constant, since a constant is a legal literal value for an identity match. With per-arm, you can opt-in to pattern matching individually, at the cost of having to remember to repeat the keyword on every line. With per-block, you only have to add the keyword once at the cost of not being able to selectively use patterns or identity matching. Which tradeoff is better is the option question. (Ilija and I disagree on which to go with.) Or, if someone can suggest a way to allow automatic detection reliably, that would also be most welcome. :-) --Larry Garfield

« previous php.internals (#129920) next »