DEV Community

Discussion on: All the changes that come with PHP 7.4

Collapse
 
goceb profile image
Goce • Edited

Unfortunately, only contravariant arguments are supported so the command/handler example will not work:

interface Command{}

interface CommandHandler{
    public function handle(Command $command) : void ;
}

class KillAllHumans implements Command{}

class KillAllHumansHandler implements CommandHandler{
    public function handle(KillAllHumans $command) : void {}
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
latengoyo profile image
alex #1Oct • Edited

I can't see the usefulness of contravariant VS covariant arguments. I guess there were some technical issues implementing covariant arguments.

I was hyped up with PHP 7.4 only for that!

Collapse
 
xoubaman profile image
Carlos Gándara • Edited

You are right. Amazingly enough, I realized it in a conversation in some slack community at the same time you wrote the comment.

I will correct the article as soon as I can. Update: fixed!

Thanks for pointing it out!