/** * @param string $currentClass * * @return array */ private function getChildClasses($currentClass) { $classes = array(); foreach ($this->driver->getAllClassNames() as $className) { if (!ClassType::from($className)->isSubclassOf($currentClass)) { continue; } $classes[] = $className; } return $classes; }
/** * Forces the factory to load the metadata of all classes known to the underlying * mapping driver. * * @return array The ClassMetadata instances of all mapped classes. */ public function getAllMetadata() { if (!$this->initialized) { $this->initialize(); } $metadata = array(); foreach ($this->driver->getAllClassNames() as $className) { $metadata[] = $this->getMetadataFor($className); } return $metadata; }
/** * Adds a default discriminator map if no one is given * * If an entity is of any inheritance type and does not contain a * discrimiator map, then the map is generated automatically. This process * is expensive computation wise. * * The automatically generated discriminator map contains the lowercase shortname of * each class as key. * * @param \Doctrine\ORM\Mapping\ClassMetadata $class */ private function addDefaultDiscriminatorMap(ClassMetadata $class) { $allClasses = $this->driver->getAllClassNames(); $subClassesMetadata = array(); $fqcn = $class->getName(); $map = array($this->getShortName($class->name) => $fqcn); $duplicates = array(); foreach ($allClasses as $subClassCandidate) { if (is_subclass_of($subClassCandidate, $fqcn)) { $shortName = $this->getShortName($subClassCandidate); if (isset($map[$shortName])) { $duplicates[] = $shortName; } $map[$shortName] = $subClassCandidate; } } if ($duplicates) { throw MappingException::duplicateDiscriminatorEntry($class->name, $duplicates, $map); } $class->setDiscriminatorMap($map); }