Functional Programming wi SPL Iterators Debug Session Marcus

  • Slides: 58
Download presentation
Functional Programming wi SPL Iterators Debug Session Marcus Börger international PHP 2004 conference Marcus

Functional Programming wi SPL Iterators Debug Session Marcus Börger international PHP 2004 conference Marcus Börger Debug Session

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 2

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 3

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 4

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 5

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 6

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 7

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 8

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 9

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 10

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 11

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 12

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 13

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 14

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 15

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 16

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 17

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 18

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 19

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 20

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 21

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 22

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 23

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 24

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 25

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 26

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 27

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 28

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 29

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 30

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 31

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 32

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 33

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 34

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 0 => 31 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 35

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 0 => 31 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 36

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 0 => 31 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 37

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 0 => 31 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 38

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 0 => 31 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 39

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 0 => 31 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 40

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 0 => 31 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 41

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 => 1 1 => 2 0 => 31 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 42

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 => => 1 2 31 32 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 43

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 => => 1 2 31 32 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 44

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 => => 1 2 31 32 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 45

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 => => 1 2 31 32 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 46

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 => => 1 2 31 32 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 47

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 => => 1 2 31 32 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 48

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 => => 1 2 31 32 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 49

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 => => 1 2 31 32 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 50

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 => => 1 2 31 32 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 51

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 => => 1 2 31 32 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 52

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 3 => => => 1 2 31 32 4 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 53

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 3 => => => 1 2 31 32 4 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 54

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 3 => => => 1 2 31 32 4 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 55

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 3 => => => 1 2 31 32 4 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 56

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 3 => => => 1 2 31 32 4 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 57

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new

Debug Session <? php $a = array('1', '2', array('31', '32'), '4'); $o = new Recursive. Array. Iterator($a); $i = new Recursive. Iterator($o); foreach($i as $key => $val) { echo "$key => $valn"; } ? > 0 1 3 => => => 1 2 31 32 4 <? php class Recursive. Array. Iterator implements Recursive. Iterator { protected $ar; function __construct(Array $ar) { $this->ar = $ar; } function rewind() { reset($this->ar); } function valid() { return !is_null(key($this->ar)); } function key() { return key($this->ar); } function current() { return current($this->ar); } function next() { next($this->ar); } function has. Children() { return is_array(current($this->ar)); } function get. Children() { return new Recursive. Array. Iterator(current($this->ar)); } } ? > Marcus Börger Debug Session 58