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.
–Daniel
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 < Constructor property promotion for final properties - Externals, but this is now an official
RFC.
* RFC: PHP: rfc:final_promotion * Implementation: [RFC] Final Property Promotion by DanielEScherzer · Pull Request #17861 · php/php-src · GitHub
--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
Hi
Am 2025-03-24 19:33, schrieb Daniel Scherzer:
I'd like to start the discussion for a new RFC about allowing final
promoted properties. You can see some preliminary discussion at <
Constructor property promotion for final properties - Externals, but this is now an official RFC.
I'm in favor of supporting all modifiers during promotion, but I don't particularly like the implicit promoting without also specifying the visibility, but given the precedent with `readonly` and hooks [1], it would at least be consistent.
I'll probably abstain from a vote for that reason.
Best regards
Tim Düsterhus
[1] The latter of which unfortunately was not specified in the RFC.
On Mon, Mar 24, 2025 at 11:33 AM Daniel Scherzer <daniel.e.scherzer@gmail.com> 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.
–Daniel
If there is no further discussion I plan to open the vote in a few days.
-Daniel