On Tue, Apr 28, 2020, at 7:37 PM, Levi Morrison via internals wrote: > > One issue that was discussed a few weeks ago, and led to the current > > syntax, was too many variations within the switch syntax; of course, trying > > to do it all in one syntax is perpetuating that problem. However, I think > > Rowan has suggested a syntax that may be sufficiently self-documenting. To > > wit, independent of rustmatch (above): > > > > switch ($foo) { > > case 1: { > > Many statements here. > > } > > case 2: { > > Many statements here. > > } > > } > > > > The curly braces are already understood by most PHPers to mean "a block of > > statements", and so it's a logical jump in this case. As Rowan suggests, > > the {} imply a break. To keep it simple we should probably not allow > > mixing and matching in a single switch. Either list-style (break required) > > or {}-style (break implied). > > > > That handles break; > > Sadly, it doesn't. That code is valid today: > > <?php > $foo = 1; > switch ($foo) { > case 1: { > echo "1\n"; > } > case 2: { > echo "2\n"; > } > } > ?> > > Which outputs: > 1 > 2
... Well, crap. It just can't be easy, can it... Would it be too context-sensitive to have the {} version only work in strict switch? Or for that matter... is anyone actually using that syntax in the wild, or is it hypothetical? Viz, if the behavior of that changed in 8.0 (a major release), would that even break anything? Even 7.4 has a couple of "the behavior changed but seriously who was using this anyway?" points in it. Could we get away with just changing it for 8.0? I'm not sure if Nikita's "check the top 1000" script could handle something that subtle. --Larry Garfield -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php