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