(PHP 7 >= 7.2.0, PHP 8)
ReflectionClass::isIterable — Проверяет, итерируемый ли класс
   Метод проверяет, принадлежит ли класс типу Traversable, который возможно перебрать в цикле foreach.
  
Сигнатура функции не содержит параметров.
   Метод возвращает значение true, если класс итерируемый, иначе возвращает значение false.
  
Пример #1 Пример проверки доступности класса для перебора методом ReflectionClass::isIterable()
<?php
class IteratorClass implements Iterator
{
    public function __construct() {}
    public function key(): mixed {}
    public function current(): mixed {}
    public function next(): void {}
    public function valid(): bool {}
    public function rewind(): void {}
}
class DerivedClass extends IteratorClass {}
class NonIterator {}
function dump_iterable($class)
{
    $reflection = new ReflectionClass($class);
    var_dump($reflection->isIterable());
}
$classes = ["ArrayObject", "IteratorClass", "DerivedClass", "NonIterator",];
foreach ($classes as $class) {
    echo "Класс $class итерируемый? ";
    dump_iterable($class);
}
?>Результат выполнения приведённого примера:
Класс ArrayObject итерируемый? bool(true) Класс IteratorClass итерируемый? bool(true) Класс DerivedClass итерируемый? bool(true) Класс NonIterator итерируемый? bool(false)
