public function visitObject(ClassMetadata $metadata, $data, Type $type, Context $context, ObjectConstructorInterface $objectConstructor = null) { $properties = $context->getNonSkippedProperties($metadata); $this->validateObjectProperties($metadata, $properties); if ($this->nodeStack->count() === 1 && $this->document->documentElement === null) { $this->createRootNode($metadata); } $nodes = []; foreach ($metadata->xmlNamespaces as $prefix => $uri) { $this->xmlNamespaces[$prefix] = $uri; } /** @var PropertyMetadata $propertyMetadata */ foreach ($properties as $propertyMetadata) { $context->getMetadataStack()->push($propertyMetadata); $this->visitProperty($propertyMetadata, $data, $context); $context->getMetadataStack()->pop(); $currentNode = $this->currentNodes; if (null === $currentNode) { continue; } elseif (is_array($currentNode)) { $nodes = array_merge($nodes, $currentNode); } else { $nodes[] = $currentNode; } } return $this->currentNodes = $nodes; }
public function visitObject(ClassMetadata $metadata, $data, Type $type, Context $context, ObjectConstructorInterface $objectConstructor = null) { $this->data = []; /** @var PropertyMetadata $propertyMetadata */ foreach ($context->getNonSkippedProperties($metadata) as $propertyMetadata) { $context->getMetadataStack()->push($propertyMetadata); $this->visitProperty($propertyMetadata, $data, $context); $context->getMetadataStack()->pop(); } return $this->data; }