position = 0; } function rewind() { $this->position = 0; } function current() { return $this->array[$this->position]; } function key() { return 'key_' . $this->position; } function next() { ++$this->position; } function valid() { return isset($this->array[$this->position]); } function __destruct() { echo "~impIterator\n"; } } class impIterAggr1 implements IteratorAggregate { public function getIterator() { return new ArrayIterator(new SimpleClass); } function __destruct() { echo "~impIterAggr1\n"; } } class impIterAggr2 implements IteratorAggregate { public function getIterator() { return new impIterator(); } function __destruct() { echo "~impIterAggr2\n"; } }