diff options
Diffstat (limited to 'ext/spl/tests/iterator_024.phpt')
-rw-r--r-- | ext/spl/tests/iterator_024.phpt | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/ext/spl/tests/iterator_024.phpt b/ext/spl/tests/iterator_024.phpt new file mode 100644 index 0000000..0c7dea1 --- /dev/null +++ b/ext/spl/tests/iterator_024.phpt @@ -0,0 +1,49 @@ +--TEST-- +SPL: RecursiveIteratorIterator with custom iterator class +--FILE-- +<?php + +$ar = array(1, 2, array(31, 32, array(331)), 4); + +foreach(new RecursiveIteratorIterator(new ArrayObject($ar, 0, "RecursiveArrayIterator")) as $v) echo "$v\n"; + +$it = new ArrayObject($ar); +var_dump($it->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=== +<?php exit(0); ?> +--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=== |