Gets the ReflectionClass instance of the mapped class.
public getReflectionClass ( ) : ReflectionClas\ReflectionClass | ||
return | ReflectionClas\ReflectionClass |
/** * {@inheritdoc} */ public function loadMetadataForClass($className, ClassMetadata $class) { $reflClass = $class->getReflectionClass(); $classAnnotations = $this->reader->getClassAnnotations($reflClass); if (isset($classAnnotations['Doctrine\\ODM\\CouchDB\\Mapping\\Document'])) { $documentAnnot = $classAnnotations['Doctrine\\ODM\\CouchDB\\Mapping\\Document']; if ($documentAnnot->indexed) { $class->indexed = true; } $class->setCustomRepositoryClass($documentAnnot->repositoryClass); } elseif (isset($classAnnotations['Doctrine\\ODM\\CouchDB\\Mapping\\EmbeddedDocument'])) { $documentAnnot = $classAnnotations['Doctrine\\ODM\\CouchDB\\Mapping\\EmbeddedDocument']; $class->isEmbeddedDocument = true; } else { if (isset($classAnnotations['Doctrine\\ODM\\CouchDB\\Mapping\\MappedSuperclass'])) { $class->isMappedSuperclass = true; } else { throw MappingException::classIsNotAValidDocument($className); } } foreach ($reflClass->getProperties() as $property) { $mapping = array(); $mapping['fieldName'] = $property->getName(); foreach ($this->reader->getPropertyAnnotations($property) as $fieldAnnot) { if ($fieldAnnot instanceof \Doctrine\ODM\CouchDB\Mapping\Field) { if ($fieldAnnot instanceof \Doctrine\ODM\CouchDB\Mapping\Version) { $mapping['isVersionField'] = true; } $mapping = array_merge($mapping, (array) $fieldAnnot); unset($mapping['value']); $class->mapField($mapping); } else { if ($fieldAnnot instanceof \Doctrine\ODM\CouchDB\Mapping\ReferenceOne) { $cascade = 0; foreach ($fieldAnnot->cascade as $cascadeMode) { $cascade += constant('Doctrine\\ODM\\CouchDB\\Mapping\\ClassMetadata::CASCADE_' . strtoupper($cascadeMode)); } $fieldAnnot->cascade = $cascade; $mapping = array_merge($mapping, (array) $fieldAnnot); unset($mapping['value']); $class->mapManyToOne($mapping); } else { if ($fieldAnnot instanceof \Doctrine\ODM\CouchDB\Mapping\ReferenceMany) { $cascade = 0; foreach ($fieldAnnot->cascade as $cascadeMode) { $cascade += constant('Doctrine\\ODM\\CouchDB\\Mapping\\ClassMetadata::CASCADE_' . strtoupper($cascadeMode)); } $fieldAnnot->cascade = $cascade; $mapping = array_merge($mapping, (array) $fieldAnnot); unset($mapping['value']); $class->mapManyToMany($mapping); } else { if ($fieldAnnot instanceof \Doctrine\ODM\CouchDB\Mapping\Attachments) { $class->mapAttachments($mapping['fieldName']); } else { if ($fieldAnnot instanceof \Doctrine\ODM\CouchDB\Mapping\EmbedOne || $fieldAnnot instanceof \Doctrine\ODM\CouchDB\Mapping\EmbedMany) { $mapping = array_merge($mapping, (array) $fieldAnnot); unset($mapping['value']); $class->mapEmbedded($mapping); } } } } } } } }