On 3/24/25 13:33, Daniel Scherzer wrote:
Hi internals,

I'd like to start the discussion for a new RFC about allowing final promoted properties. You can see some preliminary discussion at < https://externals.io/message/126475>, but this is now an official
RFC.

* RFC: https://wiki.php.net/rfc/final_promotion * Implementation: https://github.com/php/php-src/pull/17861

--Daniel



From the RFC:

Since properties declared as `final` do not need an explicit
visibility set (defaulting to public), no visibility is required in
the promotion if `final` is used, though visibility (including
asymmetric visibility) and other features (like property hooks) can
be used and combined with `final`.

My first thought was that it feels weird to define a promoted property without a visibility modifier, but I didn't realize that this is valid in PHP 8.4:

```
class Foo
{
    final string $foo = 'This is a foo';
}

var_dump(new Foo()->foo);
```

So, if that's valid, then I don't have any objections following the same pattern with promoted properties.

I find it interesting that you can still declare a class property with the `var` keyword, but you can't use `final` with `var`, and you can't use `var` to promote properties. That's probably for the best. :-)

Cheers,
Ben

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to