diff --git a/src/Metadata/MetadataFactory.php b/src/Metadata/MetadataFactory.php index d02cb3e..eec70a6 100644 --- a/src/Metadata/MetadataFactory.php +++ b/src/Metadata/MetadataFactory.php @@ -64,7 +64,11 @@ public function __invoke(): ArrayObject ->getMetadataFactory() ->getMetadataFor($reflectionClass->getName()); - $this->buildMetadataForEntity($reflectionClass); + // If an Entity attribute does not exist, skip this entity + if (! $this->buildMetadataForEntity($reflectionClass)) { + continue; + } + $this->buildMetadataForFields($entityClassMetadata, $reflectionClass); $this->buildMetadataForAssociations($reflectionClass); } @@ -82,9 +86,10 @@ public function __invoke(): ArrayObject * The buildmetadata* functions exist to simplify the buildMetadata * function. */ - private function buildMetadataForEntity(ReflectionClass $reflectionClass): void + private function buildMetadataForEntity(ReflectionClass $reflectionClass): bool { - $entityInstance = null; + $entityInstance = null; + $entityAttributeFound = false; // Fetch attributes for the entity class filterd by Attribute\Entity foreach ($reflectionClass->getAttributes(Attribute\Entity::class) as $attribute) { @@ -95,6 +100,8 @@ private function buildMetadataForEntity(ReflectionClass $reflectionClass): void continue; } + $entityAttributeFound = true; + // Only one matching instance per group is allowed assert( ! $entityInstance, @@ -116,6 +123,8 @@ private function buildMetadataForEntity(ReflectionClass $reflectionClass): void $this->getTypeName($reflectionClass->getName()), ]; } + + return $entityAttributeFound; } /**