Аннотация типа PHP, коллекции и ArrayObject

Я хочу создать структуру данных и сериализовать ее в json с пустыми списками и пустыми объектами. Код в настоящее время использует пустые массивы php для обоих.

Чтобы сгенерировать пустой объект {}, я попытался использовать ArrayObject. Однако я ищу общий тип между массивом и ArrayObject, чтобы я мог аннотировать свои функции, не указывая, возвращает ли он массив или ArrayObject.

Ex :

public function getEmptyList() :CommonType {
    return [];
}

public function getEmptyObject() :CommonType {
    return new ArrayObject();
}

Примечание: по какой-то неясной для меня причине ArrayObject не реализует Ds\Collection.


person Kiruahxh    schedule 12.11.2019    source источник
comment
Вы можете создать класс, обрабатывающий оба, а затем использовать его как объект.   -  person Markus Zeller    schedule 12.11.2019
comment
Отвечает ли это на ваш вопрос? Несколько типов возврата php 7   -  person miken32    schedule 12.11.2019
comment
array — это собственный скалярный тип, а не объект.   -  person miken32    schedule 17.11.2019
comment
Да, я не уверен, что смогу исправить это, не изменяя весь код. Я обнаружил, что ArrayObject не совместим с array_keys, array_values ​​и другими методами, поэтому я не могу использовать его напрямую для замены массива.   -  person Kiruahxh    schedule 18.11.2019