Hi
Am 2026-01-22 16:33, schrieb Nicolas Grekas:
Here is a new RFC for you to consider:
https://wiki.php.net/rfc/promoted_readonly_constructor_reassign
Thank you. I have taken a look and have the following notes (for now):
1. In the Problem Statement: “Option 2: Use default parameter
expressions (limited):”
The example seems incorrect to me, particularly the “// Cannot use $x in
default expression for $x” comment doesn't make sense. Can you check you
pasted in the correct snippet?
2. Within the proposal: “The reassignment must occur directly in the
constructor body of the declaring class (not via method calls, closures,
or other indirect means)”
I believe this is inconsistent with `__clone()` where the readonly
property remains unlocked until the end of `__clone()` (and is then
locked).
I'm seeing it is explained further below as “This restriction exists
because the check verifies that the current executing function is the
constructor of the declaring class. When a method or closure executes,
the current function changes, even if it was called from the
constructor”, which effectively means that you defined the semantics
based on the implementation instead of the other way around, which I
consider problematic from a language design PoV. I'm positive it is
possible to find a better implementation here.
3. Within the “RFC Impact” section you removed the “Ecosystem”
subsection from the template.
I believe mentioning the ecosystem impact is relevant here. This change
will likely require adjustments to static analysis tools and IDEs to not
point out the now-valid assignment as an error.
4. As per the updated RFC policy.
Please already include the (closed) voting doodle in the RFC so there is
no ambiguity here. Don't forget to include the “Abstain” option. My
suggested title would just be using the RFC title followed by a
questionmark :-)
And please add a link to the list archives to the References section
(it's required per the policy and useful for future research). For your
convenience, the correct link is this:
https://news-web.php.net/php.internals/129851
Best regards
Tim Düsterhus