--TEST-- SPL: RecursiveIteratorIterator with custom iterator class --FILE-- getIteratorClass()); try { foreach(new RecursiveIteratorIterator(new ArrayObject($ar)) as $v) echo "$v\n"; } catch (InvalidArgumentException $e) { echo $e->getMessage() . "\n"; } echo "===MANUAL===\n"; $it->setIteratorClass("RecursiveArrayIterator"); var_dump($it->getIteratorClass()); foreach(new RecursiveIteratorIterator($it) as $v) echo "$v\n"; ?> ===DONE=== --EXPECT-- 1 2 31 32 331 4 string(13) "ArrayIterator" An instance of RecursiveIterator or IteratorAggregate creating it is required ===MANUAL=== string(22) "RecursiveArrayIterator" 1 2 31 32 331 4 ===DONE===