Kdyby\Doctrine\DI\OrmExtension::processRepositoryFactoryEntities PHP Method

processRepositoryFactoryEntities() protected method

protected processRepositoryFactoryEntities ( ClassType $class )
$class Nette\PhpGenerator\ClassType
    protected function processRepositoryFactoryEntities(Code\ClassType $class)
    {
        if (empty($this->postCompileRepositoriesQueue)) {
            return;
        }
        $dic = self::evalAndInstantiateContainer($class);
        foreach ($this->postCompileRepositoriesQueue as $manager => $items) {
            $config = $this->managerConfigs[$manager];
            /** @var Kdyby\Doctrine\EntityManager $entityManager */
            $entityManager = $dic->getService($this->configuredManagers[$manager]);
            /** @var Doctrine\ORM\Mapping\ClassMetadata $entityMetadata */
            $metadataFactory = $entityManager->getMetadataFactory();
            $allMetadata = [];
            foreach ($metadataFactory->getAllMetadata() as $entityMetadata) {
                if ($config['defaultRepositoryClassName'] === $entityMetadata->customRepositoryClassName || empty($entityMetadata->customRepositoryClassName)) {
                    continue;
                }
                $allMetadata[ltrim($entityMetadata->customRepositoryClassName, '\\')] = $entityMetadata;
            }
            foreach ($items as $item) {
                if (!isset($allMetadata[$item[0]])) {
                    throw new Nette\Utils\AssertionException(sprintf('Repository class %s have been found in DIC, but no entity has it assigned and it has no entity configured', $item[0]));
                }
                $entityMetadata = $allMetadata[$item[0]];
                $serviceMethod = Nette\DI\Container::getMethodName($item[1]);
                $method = $class->getMethod($serviceMethod);
                $methodBody = $method->getBody();
                $method->setBody(str_replace('"%entityName%"', Code\Helpers::format('?', $entityMetadata->getName()), $methodBody));
            }
        }
    }