Example #1
0
 /**
  * @param EmbeddedMetadataInterface $embeddedMetadata
  * @param array                     $data
  *
  * @return object
  */
 private function getEmbeddedObject(EmbeddedMetadataInterface $embeddedMetadata, array $data)
 {
     $embedded = $this->instantiator->instantiate($embeddedMetadata->getClassAttribute());
     foreach ($embeddedMetadata->getEmbeddableClasses() as $embeddableMetadata) {
         if ($embeddableMetadata instanceof IndexMetadataInterface) {
             $name = $embeddableMetadata->getNameAttribute();
             $type = $embeddableMetadata->getTypeAttribute();
             $value = Type::getType($type)->convertToPHPValue($this->get($data, $name));
             $embeddableMetadata->setValue($embedded, $value);
         }
         if ($embeddableMetadata instanceof EmbeddedMetadataInterface) {
             $object = $this->getEmbeddedObject($embeddableMetadata, $this->get($data, $embeddableMetadata->getPropertyName(), []));
             $embeddableMetadata->setValue($embedded, $object);
         }
     }
     return $embedded;
 }