diff --git a/lib/Doctrine/Persistence/Mapping/RuntimeReflectionService.php b/lib/Doctrine/Persistence/Mapping/RuntimeReflectionService.php index 9bb5d0e4..866c4b61 100644 --- a/lib/Doctrine/Persistence/Mapping/RuntimeReflectionService.php +++ b/lib/Doctrine/Persistence/Mapping/RuntimeReflectionService.php @@ -35,14 +35,19 @@ public function __construct() */ public function getParentClasses($class) { - if (! class_exists($class)) { + if (! (class_exists($class) || trait_exists($class)) ) { throw MappingException::nonExistingClass($class); } - $parents = class_parents($class); + $parents = class_parents($class) + class_uses($class); assert($parents !== false); + // Support traits from parent classes + foreach ($parents as $parentClass) { + $parents = array_merge($parents, $this->getParentClasses($parentClass)); + } + return $parents; }