Hi Nikita,

I was thinking some more about your suggestion:

Nikita Popov wrote on 19/04/2016 15:18:
$foo = 42;
return new class {
     private $bar = $foo;
     public function getBar() { return $this->bar; }
}

If we allowed this, would it make sense to also allow it in named classes? This is currently illegal [https://3v4l.org/Kp0ep]:

$foo = 42;
class X {
    private $bar = $foo;
    public function getBar() { return $this->bar; }
}

It probably doesn't make sense to
restrict this to specific expressions, so all of

return new class {
     private $a = $var;
     private $b = $obj->prop;
     private $d = $obj->prop ?? 'default';
     // ...
}

could be fine.

We don't allow importing expressions into closures, nor are any of those property initialisations valid in the definitions of named classes, so I think allowing them here would be odd.

Regards,
--
Rowan Collins
[IMSoP]


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to