Skip to content

Final property promotion not used without visibility #20377

@DanielEScherzer

Description

@DanielEScherzer

Description

The following code:

<?php

class Demo {
    public function __construct(
        final string $foo,
        final public string $bar,
    ) {}
}

$d = new Demo("first", "second");
var_dump($d);

Resulted in this output:

object(Demo)#1 (1) {
  ["foo"]=>
  uninitialized(string)
  ["bar"]=>
  string(6) "second"
}

But I expected this output instead:

object(Demo)#1 (1) {
  ["foo"]=>
  string(5) "first"
  ["bar"]=>
  string(6) "second"
}

Looks like I didn't implement #17861 properly - the property is recognized as final, but is not initialized

PHP Version

8.5+

Operating System

No response

Metadata

Metadata

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions