Re: [VOTE] match expression
| From: | Levi Morrison via internals | Date: | Wed, 29 Apr 2020 01:19:58 +0000 |
| Subject: | Re: [VOTE] match expression | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-109901@lists.php.net to get a copy of this message | ||
On Tue, Apr 28, 2020 at 6:58 PM Larry Garfield <larry@garfieldtech.com> wrote:
>
> 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
I am confident it was used in a former employer's codebase, which is
how I immediately knew it was valid. My memory is too fuzzy to
remember anything more than it was used, unfortunately.