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. Thanks, Nikita