/** * Get the registered iterator instances. * * @return array */ public function current() { $out = parent::current(); foreach ($out as $key => &$value) { if (null === $value) { $value = $this->_infos[$key]; } } return $out; }
<?php $iter1 = new ArrayIterator(array(1, 2, 3)); $iter2 = new ArrayIterator(array(1, 2)); $iter3 = new ArrayIterator(array(new stdClass(), "string", 3)); $m = new MultipleIterator(); echo "-- Default flags, no iterators --\n"; foreach ($m as $value) { var_dump($value); } var_dump($m->current()); $m->attachIterator($iter1); $m->attachIterator($iter2); $m->attachIterator($iter3); echo "-- Default flags, MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_NUMERIC --\n"; var_dump($m->getFlags() === (MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_NUMERIC)); foreach ($m as $key => $value) { var_dump($key, $value); } try { $m->current(); } catch (RuntimeException $e) { echo "RuntimeException thrown: " . $e->getMessage() . "\n"; } try { $m->key(); } catch (RuntimeException $e) { echo "RuntimeException thrown: " . $e->getMessage() . "\n"; } echo "-- Flags = MultipleIterator::MIT_NEED_ANY | MultipleIterator::MIT_KEYS_NUMERIC --\n"; $m->setFlags(MultipleIterator::MIT_NEED_ANY | MultipleIterator::MIT_KEYS_NUMERIC);
function current() { return call_user_func_array($this->callback, parent::current()); }