> it makes it impossible to group several conditions with a single break

In Swift you can group multiple conditions with a comma `,` and in Rust with a 
pipe `|`. Here’s how that could look in PHP:

```php
match ($x) {
    1, 2: ‘One or two’;
}
```

The only thing you cannot do is this:

```php
switch ($x) {
    case 1:
        echo “One\n”;
    case 2:
        echo “Two\n”;
        break;
}
```

Meaning you cannot “bleed through” the first case into the second, executing 
both in case of `$x` being `1`. This is acceptable IMO because this looks like 
a bug even if it’s intended.

>  then why can't you use if/elseif instead of making the language more 
> complicated?

Because that’s usually the perfect use case for a switch statement.


On 10 Sep 2017, 12:22 +0200, Tony Marston <tonymars...@hotmail.com>, wrote:
> wrote in message news:7cd2884a-6606-4c3f-8f95-776fd277878b@Spark...
> >
> > Hi Tony
> >
> > > … you sometimes forget to insert a break statement then that is your
> > > fault.
> >
> > Any bug in your source code is ultimately your fault. But as mentioned
> > before human error is inevitable. You can make it easier for your users to
> > make less mistakes though. Other languages (e.g. Rust or Swift) have
> > implicit breaks in their switch statements. This has been done for a
> > reason, I wouldn’t call this a non-issue.
>
> The problem with implicit breaks is that it makes it impossible to group
> several conditions with a single break. My previous language use implicit
> breaks, and this problem really annoyed me. With PHP I have more control,
> and the fact that I have to insert explicit breaks I do not see as an
> inconvenience.
>
> > > Millions of other programmers have no problem with the switch statement
> >
> > It’s all they know. They don’t complain about null pointers even though it’s
> > inventor calls it his billion-dollar mistake. The customer rarely knows
> > what he truly needs.
>
> They know what they want to achieve, and they have to know which language
> features are available to help them meet their objectives. The fact that
> some language features have turned out to be a big mistake is purely the
> fault of the people who introduced those features. Some programmers complain
> about some languages features even though they are useful features which
> work as advertised as are not deemed to be a mistake - take yourself for
> example who is now complaining about issues with the switch statement.
>
> If what you want to achieve can be done better with a series of if/elseif
> statements than the switch statement, then why can't you use if/elseif
> instead of making the language more complicated?
>
> --
> Tony Marston
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>

Reply via email to