One important thing I'd like to have here is importing the "outer" $this.
e.g.:

public function bar(){
     return new class use($this as $that){
          public function test(){
               return $this->that;
          }
     };
}

And I dislike how this would look with NikiC's proposal:

return new class{
     private $that = $this;
};

Especially because "constant expressions" could change in the future and
allow operations with $this, eg:

An option could be what Joe proposed `new class use($this as $that)` (which
I would particularly like if it allowed any kind of expression `new class
use($this->foo->baz() + 10 as $that){}`)

Or introduce a scope resolution keyword that works similarly to `parent::`.
E.g.:

public function bar(){
     $foo = $this->getFoo();
     return new class{
          private $that = outer::$this;
          private $foo = outer::$foo;
          private $fooCall = outer::$this->getFoo();
     };
}

Thoughts?


2016-05-01 16:30 GMT+02:00 Björn Larsson <bjorn.x.lars...@telia.com>:

> Hi,
>
> Nice and clear-cut RFC! One reflection is if the usage of use
> to "import" variables could have an impact on a proposal
> for a short form of Lambda functions in the future?
>
> Cheers //Björn
>
> PS I liked the Short Closure RFC btw.
>
>
> Den 2016-04-26 kl. 10:25, skrev Joe Watkins:
>
>> Morning internals,
>>
>>     Just to be clear, the implementation is now in good shape, the
>> discussion may continue.
>>
>>     Attached is message from a confused contributor ... sorry about the
>> confusion :)
>>
>> Cheers
>> Joe
>>
>> ---------- Forwarded message ----------
>> From: Yasuo Ohgaki <yohg...@ohgaki.net>
>> Date: Tue, Apr 26, 2016 at 9:13 AM
>> Subject: Re: [PHP-DEV] RFC: Anonymous Class Lexical Scope
>> To: Joe Watkins <pthre...@pthreads.org>
>>
>>
>> Hi Joe,
>>
>> Since you seem to pause this RFC activity for now, I'm sending this
>> mail only to you.
>>
>> On Wed, Apr 20, 2016 at 3:01 PM, Joe Watkins <pthre...@pthreads.org>
>> wrote:
>>
>>> I must say that of all the suggestions made so far for syntax, I still
>>> prefer use().
>>>
>> I strongly support "use()".
>> It's the way PHP imports other scope variables :)
>>
>> Regards,
>>
>> --
>> Yasuo Ohgaki
>> yohg...@ohgaki.net
>>
>>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Reply via email to