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