/** * Returns an AppendIterator that iterates over both the wrapped object and this object */ public function getIterator() { $iterator = new AppendIterator(); if ($this->wrapped_object instanceof IteratorAggregate) { $iterator->append($element->getIterator()); } else { $iterator->append(new ArrayIterator($this->wrapped_object)); } $iterator->append(parent::getIterator()); return $iterator; }