protected function ensureAggregateRootInheritanceChainConsistency()
{
foreach ($this->classSchemata as $className => $classSchema) {
if (!class_exists($className) || $classSchema instanceof ClassSchema && $classSchema->isAggregateRoot() === false) {
continue;
}
foreach (class_parents($className) as $parentClassName) {
if (!isset($this->classSchemata[$parentClassName])) {
continue;
}
if ($this->isClassAbstract($parentClassName) === false && $this->classSchemata[$parentClassName]->isAggregateRoot() === false) {
throw new Exception(sprintf('In a class hierarchy of entities either all or no classes must be an aggregate root, "%1$s" is one but the parent class "%2$s" is not. You probably want to add a repository for "%2$s" or remove the Entity annotation.', $className, $parentClassName), 1316009511);
}
}
}
}