diff options
Diffstat (limited to 'ext/spl/tests/iterator_002.phpt')
-rw-r--r-- | ext/spl/tests/iterator_002.phpt | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/ext/spl/tests/iterator_002.phpt b/ext/spl/tests/iterator_002.phpt new file mode 100644 index 0000000..527fe6b --- /dev/null +++ b/ext/spl/tests/iterator_002.phpt @@ -0,0 +1,55 @@ +--TEST-- +SPL: Iterator using getInnerIterator +--FILE-- +<?php + +class RecursiceArrayIterator extends ArrayIterator implements RecursiveIterator +{ + function hasChildren() + { + return is_array($this->current()); + } + + function getChildren() + { + return new RecursiceArrayIterator($this->current()); + } +} + +class CrashIterator extends FilterIterator implements RecursiveIterator +{ + function accept() + { + return true; + } + + function hasChildren() + { + return $this->getInnerIterator()->hasChildren(); + } + + function getChildren() + { + return new RecursiceArrayIterator($this->getInnerIterator()->current()); + } +} + +$array = array(1, 2 => array(21, 22 => array(221, 222), 23 => array(231)), 3); + +$dir = new RecursiveIteratorIterator(new CrashIterator(new RecursiceArrayIterator($array)), RecursiveIteratorIterator::LEAVES_ONLY); + +foreach ($dir as $file) { + print "$file\n"; +} + +?> +===DONE=== +<?php exit(0); ?> +--EXPECT-- +1 +21 +221 +222 +231 +3 +===DONE=== |