public function iterator() { $aViewIterator = parent::iterator(); // for child container's children if ($this->arrChildContainers) { foreach ($this->arrChildContainers as $aContainer) { if ($aContainer->count()) { if (empty($aMergedIterator)) { $aMergedIterator = new \AppendIterator(); $aMergedIterator->append($aViewIterator); } $aMergedIterator->append($aContainer->iterator()); } } } // return merged iterators if (!empty($aMergedIterator)) { return $aMergedIterator; } else { return $aViewIterator; } }