Skip to content

[RFC] Final Property Promotion#17861

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base:master
Choose a base branch
from

Conversation

DanielEScherzer
Copy link
Member

@DanielEScherzerDanielEScherzer commented Feb 19, 2025

@TimWolla
Copy link
Member

This does not appear to be explicitly specified in the RFC and is a language change. I'm not sure this is an appropriate bugfix for 8.4.

@TimWolla
Copy link
Member

/cc @Crell

@iluuu1994
Copy link
Member

This came up, and there were some concerns it could imply const parameters as in Java. So we just left it out.

@iluuu1994
Copy link
Member

So no, this is not a bug. If you think final should be a promoted keyword, please open a new discussion on the mailing list.

@DanielEScherzerDanielEScherzer changed the base branch from PHP-8.4 to masterMarch 24, 2025 18:26
@DanielEScherzerDanielEScherzer changed the title GH-17860: allow final in constructor property promotion[RFC] Final Property PromotionMar 24, 2025
Comment on lines +12 to +14
class B extends A {
public $prop { get {} set {} }
}
Copy link
Contributor

@mvorisekmvorisekApr 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
class B extends A {
public$prop{ get {} set {} }
}
class B extends A {
public$prop= 5
}
Suggested change
class B extends A {
public$prop { get {} set {} }
}
class B extends A {
publicfunction __construct(
public$prop
) {}
}
Suggested change
class B extends A {
public$prop { get {} set {} }
}
class B extends A {
publicfunction __construct(
$prop
) {}
}

Is this allowed after this PR? If yes, is it tested?

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GitHub's display is a bit confusing - are you suggesting that the code be

class B extends A { $prop } 

? That isn't valid PHP

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(edited)

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

class B extends A { public function __construct( $prop ) {} } 

doesn't involve property promotion

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It does in A class and I would like to get this tested.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment
close