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
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 iffinal
is used, though visibility (including
asymmetric visibility) and other features (like property hooks) can
be used and combined withfinal
.
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