/** * @param WriterHelper $writer * @param ClassMetadata $classMetadata * @param string $fieldName * @param mixed $fieldValue */ private function writeElement(WriterHelper $writer, ClassMetadata $classMetadata, $fieldName, $fieldValue) { $fieldType = $classMetadata->getTypeOfField($fieldName); $mapping = $classMetadata->getFieldMapping($fieldName); $prefix = isset($mapping['prefix']) ? $mapping['prefix'] : null; if ($this->classMetadataFactory->hasMetadataFor($fieldType)) { if ($classMetadata->isCollection($fieldName)) { if ($classMetadata->hasFieldWrapping($fieldName)) { $writer->startElement($mapping['wrapper'], $prefix); } foreach ($fieldValue as $value) { $this->doMarshal($value, $writer, $mapping); } if ($classMetadata->hasFieldWrapping($fieldName)) { $writer->endElement(); } } else { $this->doMarshal($fieldValue, $writer, $mapping); } } else { if ($this->allowUnknownElements) { $this->doMarshal($fieldValue, $writer, $mapping); } } }
/** * @param WriterHelper $writer * @param ClassMetadata $classMetadata * @param string $fieldName * @param mixed $fieldValue */ private function _writeElement(WriterHelper $writer, ClassMetadata $classMetadata, $fieldName, $fieldValue) { $fieldType = $classMetadata->getTypeOfField($fieldName); if ($this->classMetadataFactory->hasMetadataFor($fieldType)) { if ($classMetadata->isCollection($fieldName)) { foreach ($fieldValue as $value) { $this->doMarshal($value, $writer); } } else { $this->doMarshal($fieldValue, $writer); } } }
/** * Returns the OXM mapping descriptor for a class. * * The class name must be the fully-qualified class name without a leading backslash * (as it is returned by get_class($obj)) or an aliased class name. * * Examples: * MyProject\Domain\User * sales:PriceRequest * * @return \Doctrine\OXM\Mapping\ClassMetadata * @internal Performance-sensitive method. */ public function getClassMetadata($className) { return $this->metadataFactory->getMetadataFor($className); }