protected function __construct($value) { if ($value instanceof \IteratorAggregate) { $value = $value->getIterator(); } else { if (!$value instanceof \Traversable) { if (!is_array($value)) { $value = [$value]; } $value = new \ArrayIterator($value); } } parent::__construct($value); }