/** * @param array $data * @param string $class * @param null $format * @param array $context * * @return object */ public function denormalize($data, $class, $format = null, array $context = []) { foreach ([static::KEY_PARAMS, static::KEY_RESULT] as $key) { if (empty($data[$key])) { continue; } $class = isset($context['params']) ? $context['params'] : MixedArrayDenormalizer::TYPE; $data[$key] = $this->serializer->denormalize($data[$key], $class, $context['encoding'], $context); } return parent::denormalize($data, $class, $format, $context); }
/** * @param mixed $value * @param string $class * @param string $name * @param string $format * @param array $context * * @return mixed|object */ protected function denormalizeProperty($value, $class, $name, $format = null, array $context = array()) { /** @var ClassMetadata $meta */ $meta = $context['entityMeta']; if ($meta->hasField($name)) { return $value; } if (isset($meta->embeddedClasses[$name])) { return parent::denormalize($value, null, $format, $context); } if (!isset($meta->associationMappings[$name])) { return parent::denormalizeProperty($value, $class, $name, $format, $context); } switch ($meta->associationMappings[$name]['type']) { case ClassMetadata::ONE_TO_ONE: case ClassMetadata::MANY_TO_ONE: return $this->denormalizeAssociation($value, null, $name, $format, $context); case ClassMetadata::ONE_TO_MANY: case ClassMetadata::MANY_TO_MANY: return $this->denormalizeCollection($value, null, $name, $format, $context); } }