This is great. The gaps in PHP's type annotations are slowly being filled.
:)

Are the rules for compatibility between callables the same rules for
compatibility between methods in classes/interfaces? Because presently,
this is allowed:

interface Test {
    public function testMethod();
}

function foo1(Test $x) { }

foo1(new class implements Test {
    public function testMethod(int $extraParam = 0) { }
});


but, according to the RFC, this would not be:

function foo2(callable():void $x) { }

foo2(function (int $extraParam = 0) { });


I don't see why they should be different.

I also didn't see anything mentioning reference parameters/returns. I
assume it just follows the rules for method compatibility?

On Fri, Apr 22, 2016 at 2:12 PM, Marcio Almada <marcio.w...@gmail.com>
wrote:

> Hello everyone,
>
> We just completed the draft for the "Callable Types" RFC. This RFC has been
> recently mentioned during other type related threads on this mailing list,
> so it feels to be the right time to put the proposal in context:
>
> The proposal is at https://wiki.php.net/rfc/callable-types
>
> The W.I.P patch is available for testing through http://3v4l.org under the
> RFC tab.
>
> We count with your detailed feedback and insights. Let's have a nice,
> respectful and
> constructive conversation about the RFC and work on possible improvements!
>
> Thanks
> Nikita Nefedov
> Márcio Almada
>

Reply via email to