Как новый объект работает в последней версии PHP - PullRequest
0 голосов
/ 15 сентября 2018

Согласно документации по PHP 7.2

Введен новый тип объекта, который можно использовать для (контравариантной) типизации параметров и (ковариантной) типизации возврата любых объектов.

И приведен следующий пример

<?php

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

test(new StdClass());

Может кто-нибудь уточнить, что подразумевается под контравариантным параметром и ковариантным типом возврата и как работает этот новый объект

1 Ответ

0 голосов
/ 15 сентября 2018

object в обоих местах вашего кода может возвращать универсальный объект, т.е. экземпляр любого типа. (как показано в вашем примере)

Иначе это должно быть:

<?php

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

test(new StdClass());
...