PHP 7.2+


7.2+

== Новый тип object ==

function test(object $obj) : object
{
    return new SplQueue();
}

test(new StdClass());


== Переопределение абстрактных методов ==

abstract class A
{
    abstract function test(string $s);
}
abstract class B extends A
{
    // переопределён - всё ещё сохраняя контравариантность для параметров и ковариантность для возвращаемых значений
    abstract function test($s) : int;
}


== "Наследование" типов параметров ==

interface A
{
    public function Test(array $input);
}

class B implements A
{
    public function Test($input){} // тип параметра не указан = array
}