/** * @param mixed $data * @param Definition $definition * @param mixed $origin */ protected function denormalizeArray($data, Definition $definition, &$origin) { $collection = $origin !== null ? $definition->extract($origin) : $definition->create($origin); $prototype = $definition->getPrototype(); if (!is_array($data) && !$data instanceof \Traversable) { $data = array(); } foreach ($data as $index => $entry) { $item = isset($collection[$index]) ? $collection[$index] : $prototype->create($origin); $definition->settleKey($item, $index); $collection[$index] = $this->denormalize($entry, $prototype, $item); } $definition->settle($origin, $collection); }