У меня есть много функций, которые либо имеют намеки типа для массивов, либо используют is_array() для проверки массивности переменной.
Теперь я начинаю использовать объекты, которые являются итерабельными. Они реализуют Iterator или IteratorAggregate. Будут ли они приняты в качестве массивов, если они пройдут через намеки типа или пройдут is_array()?
Если мне нужно изменить свой код, существует ли общий тип is_iterable(), или мне нужно сделать что-то вроде:
if ( is_array($var) OR $var instance_of Iterable OR $var instanceof IteratorAggregate ) { ... }
Какие еще итерируемые интерфейсы есть?