On 19/04/16 16:18, Nikita Popov wrote:
On Tue, Apr 19, 2016 at 3:31 PM, Joe Watkins <pthre...@pthreads.org> wrote:
Morning Internals,
Please review the following RFC:
https://wiki.php.net/rfc/lexical-anon
A look at the patch from those of you that do that would be good :)
Hey Joe,
The syntax and semantics proposed in this RFC don't sit quite well with me.
Especially the fact that a use($foo) on the class is then used as
$this->foo in methods is non-intuitive to me, as it differs from how the
same syntax behaves on closures. I'd like to suggest an alternative syntax:
$foo = 42;
return new class {
private $bar = $foo;
public function getBar() { return $this->bar; }
}
That is, allow properties inside the anonymous class to be initialized
based on values from the surrounding scope. This is more explicit (clearly
shows that a property is being created), it allows explicit control over
the visibility and, depending on implementation, might be more flexible
with regards to the values it accepts. 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.
I could not express better than you, so big +1 for your proposal so far.
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php