/** * @return object */ public function denormalize(NormalizationResult $wrappedNormalizationResult, AggregateRepository $aggregateRepository) { $wrappedMetadata = $wrappedNormalizationResult->metadata(); $normalizer = $this->getNormalizer($wrappedMetadata['aggregateClass']); $unwrappedNormalizationResult = new NormalizationResult($wrappedNormalizationResult->normalizedAggregate(), $wrappedMetadata['metadata']); $aggregate = $normalizer->denormalize($unwrappedNormalizationResult, $aggregateRepository); return $aggregate; }
public function denormalize(NormalizationResult $normalizationResult, AggregateRepository $aggregateRepository) { $normalizedAggregate = $normalizationResult->normalizedAggregate(); $scope = (object) ['objects' => [], 'aggregateRepository' => $aggregateRepository]; foreach ($normalizedAggregate['#objects'] as $objectId => $normalizedObject) { $className = $normalizedObject['#class']; $scope->objects[$objectId] = self::getClassReflection($className)->newInstanceWithoutConstructor(); } $aggregateClassName = $normalizedAggregate['#class']; $aggregate = self::getClassReflection($aggregateClassName)->newInstanceWithoutConstructor(); foreach ($scope->objects as $objectId => $object) { $normalizedObject = $normalizedAggregate['#objects'][$objectId]; $this->hydrateObject($normalizedObject, $object, $scope); } $this->hydrateObject($normalizedAggregate, $aggregate, $scope); return $aggregate; }