В PHP 7.2.0 была добавлена частичная контрвариантность путем устранения ограничений типа для параметров в дочернем методе.

Начиная с PHP 7.4.0, добавлена полная поддержка ковариации и контравариантности.

Ковариантность

В PHP 7.4+ есть ковариантность возвращаемых типов

То есть, ковариантность это сужение диапазона вариантов

В PHP 7.2.* || 7.3.* ковариантность можно достигнуть только если возвращаемый тип вовсе не был указан

<?php

interface Message
{
}

class Sms implements Message
{
}

class Email implements Message
{
}

interface MessageMaker
{
    public function make(): Message;
}

class SmsMaker implements MessageMaker
{
    public function make(): Sms // Возвращаем класс Sms вместо Message
    {
        return new Sms();
    }
}

class EmailMaker implements MessageMaker
{
    public function make(): Email // Возвращаем класс Email вместо Message
    {
        return new Email();
    }
}

Контрвариантность

В PHP есть контрвариантность параметров функции

Контрвариантность - расширение диапазона вариантов

В PHP 7.2.* || 7.3.* контрвариантность можно достигнуть только при помощи полного устранения типа у параметра

<?php

interface MediaContent
{
}

class Article implements MediaContent
{
}

interface Media
{
    public function publish(Article $media): void;
}

class Newspaper implements Media
{
    public function publish(Article $media): void
    {
    }
}

class Website implements Media
{
    public function publish(MediaContent $media): void // расширился принимаемый тип (7.4+)
    {
    }

    public function publish($media): void // расширился принимаемый тип (7.2.* || 7.3.*)
    {
    }
}