diff --git a/src/Loggable/Mapping/Driver/Attribute.php b/src/Loggable/Mapping/Driver/Attribute.php index c72b70570..84bf7d391 100644 --- a/src/Loggable/Mapping/Driver/Attribute.php +++ b/src/Loggable/Mapping/Driver/Attribute.php @@ -11,6 +11,7 @@ use Doctrine\ODM\MongoDB\Mapping\ClassMetadata as ClassMetadataODM; use Doctrine\ORM\Mapping\ClassMetadata as ClassMetadataORM; +use Doctrine\ORM\Mapping\EmbeddedClassMapping; use Doctrine\Persistence\Mapping\ClassMetadata; use Gedmo\Exception\InvalidMappingException; use Gedmo\Mapping\Annotation\Loggable; @@ -137,7 +138,9 @@ protected function isClassAnnotationInValid(ClassMetadata $meta, array &$config) */ private function inspectEmbeddedForVersioned(string $field, array &$config, ClassMetadataORM $meta): void { - $class = new \ReflectionClass($meta->embeddedClasses[$field]['class']); + /** Remove conditional when ORM 2.x is no longer supported. */ + $className = ($meta->embeddedClasses[$field] instanceof EmbeddedClassMapping) ? $meta->embeddedClasses[$field]->class : $meta->embeddedClasses[$field]['class']; + $class = new \ReflectionClass($className); // property annotations foreach ($class->getProperties() as $property) { diff --git a/src/Sluggable/Mapping/Driver/Attribute.php b/src/Sluggable/Mapping/Driver/Attribute.php index 72fc94a22..a74e71d72 100644 --- a/src/Sluggable/Mapping/Driver/Attribute.php +++ b/src/Sluggable/Mapping/Driver/Attribute.php @@ -9,6 +9,7 @@ namespace Gedmo\Sluggable\Mapping\Driver; +use Doctrine\ORM\Mapping\EmbeddedClassMapping; use Doctrine\Persistence\Mapping\ClassMetadata; use Gedmo\Exception\InvalidMappingException; use Gedmo\Mapping\Annotation\Slug; @@ -82,7 +83,9 @@ public function readExtendedMetadata($meta, array &$config) // Embedded entity if (property_exists($meta, 'embeddedClasses') && $meta->embeddedClasses) { foreach ($meta->embeddedClasses as $propertyName => $embeddedClassInfo) { - $embeddedClass = new \ReflectionClass($embeddedClassInfo['class']); + /** Remove conditional when ORM 2.x is no longer supported. */ + $className = ($embeddedClassInfo instanceof EmbeddedClassMapping) ? $embeddedClassInfo->class : $embeddedClassInfo['class']; + $embeddedClass = new \ReflectionClass($className); foreach ($embeddedClass->getProperties() as $embeddedProperty) { $config = $this->retrieveSlug($meta, $config, $embeddedProperty, $propertyName); diff --git a/src/Translatable/Mapping/Driver/Attribute.php b/src/Translatable/Mapping/Driver/Attribute.php index 044a46e6b..da78f83f4 100644 --- a/src/Translatable/Mapping/Driver/Attribute.php +++ b/src/Translatable/Mapping/Driver/Attribute.php @@ -9,6 +9,7 @@ namespace Gedmo\Translatable\Mapping\Driver; +use Doctrine\ORM\Mapping\EmbeddedClassMapping; use Gedmo\Exception\InvalidMappingException; use Gedmo\Mapping\Annotation\Language; use Gedmo\Mapping\Annotation\Locale; @@ -118,7 +119,9 @@ public function readExtendedMetadata($meta, array &$config) continue; } - $embeddedClass = new \ReflectionClass($embeddedClassInfo['class']); + /** Remove conditional when ORM 2.x is no longer supported. */ + $className = ($embeddedClassInfo instanceof EmbeddedClassMapping) ? $embeddedClassInfo->class : $embeddedClassInfo['class']; + $embeddedClass = new \ReflectionClass($className); foreach ($embeddedClass->getProperties() as $embeddedProperty) { if ($translatable = $this->reader->getPropertyAnnotation($embeddedProperty, self::TRANSLATABLE)) { diff --git a/src/Translatable/Mapping/Driver/Xml.php b/src/Translatable/Mapping/Driver/Xml.php index 996c5c066..0f02b7bc1 100644 --- a/src/Translatable/Mapping/Driver/Xml.php +++ b/src/Translatable/Mapping/Driver/Xml.php @@ -9,6 +9,7 @@ namespace Gedmo\Translatable\Mapping\Driver; +use Doctrine\ORM\Mapping\EmbeddedClassMapping; use Gedmo\Exception\InvalidMappingException; use Gedmo\Mapping\Driver\Xml as BaseXml; @@ -61,7 +62,10 @@ public function readExtendedMetadata($meta, array &$config) if ($meta->isInheritedEmbeddedClass($propertyName)) { continue; } - $xmlEmbeddedClass = $this->_getMapping($embeddedClassInfo['class']); + + /** Remove conditional when ORM 2.x is no longer supported. */ + $className = ($embeddedClassInfo instanceof EmbeddedClassMapping) ? $embeddedClassInfo->class : $embeddedClassInfo['class']; + $xmlEmbeddedClass = $this->_getMapping($className); $config = $this->inspectElementsForTranslatableFields($xmlEmbeddedClass, $config, $propertyName); } }