public static function adapter(\Traversable $iterator) { if ($iterator instanceof IIterator) { return $iterator; } elseif ($iterator instanceof IGenerator) { return new IGeneratorAdapter($iterator); } elseif ($iterator instanceof \ArrayIterator) { return new ArrayIteratorAdapter($iterator); } elseif ($iterator instanceof \IteratorAggregate) { return static::adapter($iterator->getIterator()); } else { return new IteratorAdapter($iterator); } }
public function setAll(\Traversable $elements) { $elements = IteratorScheme::adapter($elements); $elements->rewind(); while ($element = $elements->fetch()) { $this->setRef($element[0], $element[1]); } }