diff options
Diffstat (limited to 'ext/spl/tests/iterator_016.phpt')
| -rw-r--r-- | ext/spl/tests/iterator_016.phpt | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/ext/spl/tests/iterator_016.phpt b/ext/spl/tests/iterator_016.phpt new file mode 100644 index 0000000..f231c6e --- /dev/null +++ b/ext/spl/tests/iterator_016.phpt @@ -0,0 +1,76 @@ +--TEST-- +SPL: RecursiveIteratorIterator and beginChildren/endChildren +--FILE-- +<?php + +class Menu extends ArrayObject +{ + function getIterator() + { + echo __METHOD__ . "\n"; + return new RecursiveArrayIterator($this); + } +} + +class MenuOutput extends RecursiveIteratorIterator +{ + function __construct(Menu $it) + { + parent::__construct($it); + } + function rewind() + { + echo "<ul>\n"; + parent::rewind(); + } + function beginChildren() + { + echo str_repeat(' ',$this->getDepth())."<ul>\n"; + } + + function endChildren() + { + echo str_repeat(' ',$this->getDepth())."</ul>\n"; + } + function valid() + { + if (!parent::valid()) { + echo "<ul>\n"; + return false; + } + return true; + } +} + +$arr = array("a", array("ba", array("bba", "bbb"), array(array("bcaa"))), array("ca"), "d"); +$obj = new Menu($arr); +$rit = new MenuOutput($obj); +foreach($rit as $k=>$v) +{ + echo str_repeat(' ',$rit->getDepth()+1)."$k=>$v\n"; +} +?> +===DONE=== +<?php exit(0); ?> +--EXPECTF-- +Menu::getIterator +<ul> + 0=>a + <ul> + 0=>ba + <ul> + 0=>bba + 1=>bbb + </ul> + <ul> + <ul> + 0=>bcaa + </ul> + </ul> + </ul> + <ul> + 0=>ca + </ul> + 3=>d +<ul> +===DONE=== |
