/** * Assigns the repository of any aggregate root to all it's * subclasses, unless they are aggregate root already. * * @param ClassSchema $classSchema * @return void */ protected function makeChildClassesAggregateRoot(ClassSchema $classSchema) { foreach ($this->getAllSubClassNamesForClass($classSchema->getClassName()) as $childClassName) { if (!isset($this->classSchemata[$childClassName]) || $this->classSchemata[$childClassName]->isAggregateRoot()) { continue; } $this->classSchemata[$childClassName]->setRepositoryClassName($classSchema->getRepositoryClassName()); $this->makeChildClassesAggregateRoot($this->classSchemata[$childClassName]); } }