On Mon, Jan 26, 2026 at 5:48 AM Morgan <[email protected]> wrote:

> On 2026-01-26 07:44, Larry Garfield wrote:
> >
> > 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. :-)
> >
>
> If it had to be one or the other [...]


Does it have to be one of the other though? Can't we have both?

```php
$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.
};
```php

```php
$result = match ($somevar) is {
    Foo => 'foo', // This matches against the pattern `Foo`, which is a
class name.
    Bar => 'bar', // This matches against the pattern `Bar`, which is also
a class name
};
```

```php
$result = match ($somevar) is {
    is Foo => 'foo', // This is an error (?)
};
```php

We already have somewhat similar behaviour with `readonly` (for properties)
and `abstract` (for methods) class modifiers. When you specify it on a
class, it applies to all members, but you can also specify it on an
individual member.





-- 
  Best regards,
      Bruce Weirdan                                     mailto:
[email protected]

Reply via email to