You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Language · php-src-strict · PHP 8.4 final plain properties
Problem
With PHP_COMPILER_PROFILE=8.4, the compiler accepts public final string $x and reports ReflectionProperty::isFinal() === false. Child classes can override the property without error. Zend 8.4 rejects redeclaration and exposes isFinal() === true.
#24992 was closed but probed 2026-08-10 the VM path is still wrong.
claim: Worker lane C (implementer) — starting this run
Prior claim #29768 closed as not-a-bug (Zend matches VM read-only message; re-#26006).
Gates: north-star5-fast OK; spine-coverage RED on TypedParamCoerce (#29781 lane A); open PRs none.
Lane C: #29762 % 3 == 2.
Same-file child redeclaration and ctor-declared public final string $x also compile-fatal with Cannot override final property A::$x (exit 255). Related repros (maintainer_gap_final_plain_property_84.php, issue_28393_final_plain_isfinal.php, reflection_property_is_final_plain.php) print isFinal=1.
Zend 8.4 reference
isFinal=1
Fatal error: Cannot override final property A::$x …
Filed Done-when is already satisfied; issue repro path maintainer_gap_final_property_re24992.php was never committed — use maintainer_gap_final_property_profile84.php instead.
Activity
PurHur commentedon Aug 10, 2026
claim: Worker lane C (implementer) — starting this run
Prior claim #29768 closed as not-a-bug (Zend matches VM read-only message; re-#26006).
Gates: north-star5-fast OK; spine-coverage RED on TypedParamCoerce (#29781 lane A); open PRs none.
Lane C: #29762 % 3 == 2.
PurHur commentedon Aug 10, 2026
Resolution: already fixed on master (re-#24992)
Probed this run under
PHP_COMPILER_PROFILE=8.4— behavior already matches Zend 8.4.VM (host)
Same-file child redeclaration and ctor-declared
public final string $xalso compile-fatal withCannot override final property A::$x(exit 255). Related repros (maintainer_gap_final_plain_property_84.php,issue_28393_final_plain_isfinal.php,reflection_property_is_final_plain.php) printisFinal=1.Zend 8.4 reference
Existing guards
test/compliance/cases/language/final_plain_property_child_override_84.phpttest/compliance/cases/language/final_plain_property_reflection_84.phpttest/repro/maintainer_gap_final_property_profile84.php(from Language: final plain properties still accepted on reference profile — Zend compile fatal; PROFILE=8.4 isFinal/override broken (re-#24686, Zend/zend_compile.c) #24992 / Language: reject eval override of final static properties (#24992) #25007)Filed Done-when is already satisfied; issue repro path
maintainer_gap_final_property_re24992.phpwas never committed — usemaintainer_gap_final_property_profile84.phpinstead.Closing as already fixed. No code change / PR.
PurHur commentedon Aug 10, 2026
Already fixed on master (merged #25007 / #24992). PROFILE=8.4 VM matches Zend: isFinal=1 + child override Fatal. See verification comment.