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 officialRFC.* 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
OpenPGP_signature.asc
Description: OpenPGP digital signature