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.

  Even when anon classes do have lexical scope, there is value in being
able to implement these kinds of interfaces using only a function.

  The changes to the vm are restricted to a few lines, that's not seriously
a problem, is it !?

  I don't see where I extend closure with an interface ...

  >     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> 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
>

Reply via email to