Согласно документации по PHP 7.2
Введен новый тип объекта, который можно использовать для (контравариантной) типизации параметров и (ковариантной) типизации возврата любых объектов.
И приведен следующий пример
<?php
function test(object $obj) : object
{
return new SplQueue();
}
test(new StdClass());
Может кто-нибудь уточнить, что подразумевается под контравариантным параметром и ковариантным типом возврата и как работает этот новый объект