xref: /PHP-7.2/ext/spl/tests/iterator_015.phpt (revision 610c7fbe)
1--TEST--
2SPL: RecursiveIteratorIterator and beginChildren/endChildren
3--FILE--
4<?php
5
6class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
7{
8	function rewind()
9	{
10		echo "<ul>\n";
11		parent::rewind();
12	}
13	function beginChildren()
14	{
15		echo str_repeat('  ',$this->getDepth())."<ul>\n";
16	}
17
18	function endChildren()
19	{
20		echo str_repeat('  ',$this->getDepth())."</ul>\n";
21	}
22	function valid()
23	{
24		if (!parent::valid()) {
25			echo "<ul>\n";
26			return false;
27		}
28		return true;
29	}
30}
31
32$arr = array("a", array("ba", array("bba", "bbb"), array(array("bcaa"))), array("ca"), "d");
33$obj = new RecursiveArrayIterator($arr);
34$rit = new RecursiveArrayIteratorIterator($obj);
35foreach($rit as $k=>$v)
36{
37	echo str_repeat('  ',$rit->getDepth()+1)."$k=>$v\n";
38}
39?>
40===DONE===
41<?php exit(0); ?>
42--EXPECTF--
43<ul>
44  0=>a
45  <ul>
46    0=>ba
47    <ul>
48      0=>bba
49      1=>bbb
50    </ul>
51    <ul>
52      <ul>
53        0=>bcaa
54      </ul>
55    </ul>
56  </ul>
57  <ul>
58    0=>ca
59  </ul>
60  3=>d
61<ul>
62===DONE===
63