/** * @param mixed $data * @param Definition $definition * @param mixed $origin * @return array */ protected function denormalizeObject($data, Definition $definition, &$origin) { if ($data === null) { $definition->settle($origin, null); return; } $object = $definition->extract($origin) ?: $definition->create($origin); foreach ($definition->getProperties() as $propertyName => $propertyDefinition) { $propertyData = isset($data[$propertyName]) ? $data[$propertyName] : null; $this->denormalize($propertyData, $propertyDefinition, $object); } $definition->settle($origin, $object); }