/** * Constructor * * @throws \InvalidArgumentException When argument is not valid. * * @param callable $callback Gets called for each element and gets passed the current elements * of all iterators as arguments. * @param array $iterators Array of iterators, which should be concurrently traversed. */ function __construct($callback, array $iterators) { if (!is_callable($callback)) { throw new \InvalidArgumentException('Invalid callback'); } $this->callback = $callback; foreach ($iterators as $it) { $this->attachIterator($it); } parent::__construct(); }