> What value? Yes, shorter, more concise (from the programmers perspective) syntax.
Right now, if you do a lot of work with Closures, you have to verify their interface, the value in having the engine do it for you seems really obvious. But also ... > I thought the same might be implemented through anonymous classes. An anonymous class cannot be rebound, they are obviously not the same thing. > I didn't take a deep look into the code. I'll wait until you have, I think :) Cheers Joe On Tue, Apr 19, 2016 at 2:22 PM, Dmitry Stogov <dmi...@zend.com> wrote: > > > On 04/19/2016 03:52 PM, Joe Watkins wrote: > > Oh, it's confusing text in the RFC, using the word "Interface" ... that's > meant as a placeholder for InterfaceName. > > Cheers > Joe > > On Tue, Apr 19, 2016 at 1:50 PM, Joe Watkins <pthre...@pthreads.org> > wrote: > >> Morning Dmitry, >> >> In your example, they will do the same thing. >> >> Anon classes don't have lexical scope, I have a patch for that, and an >> RFC, I'm just tidying it. >> > > OK. so this is not just a syntax sugar, but if you implement lexical scope > for anonymous classes it's going to be sugar. Right? > May be it's better to start from classes first? > > >> Even when anon classes do have lexical scope, there is value in being >> able to implement these kinds of interfaces using only a function. >> > > What value? just shorter syntax? or anything else? > > >> The changes to the vm are restricted to a few lines, that's not >> seriously a problem, is it !? >> > > I hope no. I didn't understand all details of proposal and I didn't take a > deep look into the code. > > >> I don't see where I extend closure with an interface ... >> > > I meant new field zend_execute_data *interface in zend_closure structure. > I thought the same might be implemented through anonymous classes. > > Thanks. Dmitry. > > > >> > zend_do_inheritance_ex(type, zend_ce_closure, 1); >> > zend_class_implements(type, 1, interface); >> >> Cheers >> Joe >> >> On Tue, Apr 19, 2016 at 1:01 PM, Dmitry Stogov < <dmi...@zend.com> >> dmi...@zend.com> wrote: >> >>> <?php >>> interface IFoo { >>> public function method() : int; >>> } >>> >>> $cb1 = function () implements IFoo : int { >>> return 42; >>> }; >>> >>> $cb2 = new class implements IFoo { >>> function method() : int { >>> return 42; >>> } >>> }; >>> ?> >>> >>> Are $cb1 and $cb2 going to be the same (do the same)? >>> Is this just a new syntax sugar, or a really new feature? >>> >>> According to implementation, I think, you shouldn't extend >>> "zend_closure" with "interface". >>> If this is a sugar, lets implement it as a sugar (without VM changes). >>> >>> But may be I didn't understand the idea at all :) >>> >>> Thanks. Dmitry. >>> >>> >>> ________________________________________ >>> From: Joe Watkins <pthre...@pthreads.org> >>> Sent: Monday, April 18, 2016 13:22 >>> To: PHP internals >>> Subject: [PHP-DEV] RFC: Functional Interfaces >>> >>> Morning Internals, >>> >>> Please review the following RFC: >>> >>> https://wiki.php.net/rfc/functional-interfaces >>> >>> An implementation is provided, and is testable on 3v4l. >>> >>> Review of the implementation from those of you that do that would be >>> good :) >>> >>> Cheers >>> Joe >>> >> >> > >