Bisna\Doctrine\Container::startORMConfiguration PHP Метод

startORMConfiguration() приватный Метод

Initialize ORM Configuration.
private startORMConfiguration ( array $config = [] ) : Doctrine\ORM\Configuration
$config array ORM EntityManager configuration.
Результат Doctrine\ORM\Configuration
    private function startORMConfiguration(array $config = array())
    {
        $configClass = $config['configurationClass'];
        $configuration = new $configClass();
        $configuration = new \Doctrine\ORM\Configuration();
        // Entity Namespaces configuration
        foreach ($config['entityNamespaces'] as $alias => $namespace) {
            $configuration->addEntityNamespace($alias, $namespace);
        }
        // Proxy configuration
        $configuration->setAutoGenerateProxyClasses($config['proxy']['autoGenerateClasses'] === true || !in_array($config['proxy']['autoGenerateClasses'], array("0", "false", false)));
        $configuration->setProxyNamespace($config['proxy']['namespace']);
        $configuration->setProxyDir($config['proxy']['dir']);
        // Cache configuration
        $configuration->setMetadataCacheImpl($this->getCacheInstance($config['metadataCache']));
        $configuration->setResultCacheImpl($this->getCacheInstance($config['resultCache']));
        $configuration->setQueryCacheImpl($this->getCacheInstance($config['queryCache']));
        // SecondLevelCache configuration
        if (isset($config['secondLevelCache']) && method_exists($configuration, 'setSecondLevelCacheEnabled')) {
            $configuration->setSecondLevelCacheEnabled($config['secondLevelCache']['enabled'] === true || !in_array($config['secondLevelCache']['enabled'], array("0", "false", false)));
            if ($configuration->isSecondLevelCacheEnabled()) {
                $regionsConfigurationClass = $config['secondLevelCache']['regionsConfigurationClass'];
                $factoryClass = $config['secondLevelCache']['cacheFactoryClass'];
                $factory = new $factoryClass(new $regionsConfigurationClass(), $this->getCacheInstance($config['secondLevelCache']['cache']));
                $configuration->getSecondLevelCacheConfiguration()->setCacheFactory($factory);
                if (isset($config['secondLevelCache']['loggerClass'])) {
                    $loggerClass = $config['secondLevelCache']['loggerClass'];
                    $configuration->getSecondLevelCacheConfiguration()->setCacheLogger(new $loggerClass());
                }
            }
        }
        // Metadata configuration
        $configuration->setMetadataDriverImpl($this->startORMMetadata($config['metadataDrivers']));
        //Filters http://doctrine-orm.readthedocs.org/en/latest/reference/filters.html#configuration
        if (isset($config['filters'])) {
            foreach ($config['filters'] as $name => $className) {
                $configuration->addFilter($name, $className);
            }
        }
        // DQL Functions configuration
        $dqlFunctions = $config['DQLFunctions'];
        foreach ($dqlFunctions['datetime'] as $name => $className) {
            $configuration->addCustomDatetimeFunction($name, $className);
        }
        foreach ($dqlFunctions['numeric'] as $name => $className) {
            $configuration->addCustomNumericFunction($name, $className);
        }
        foreach ($dqlFunctions['string'] as $name => $className) {
            $configuration->addCustomStringFunction($name, $className);
        }
        // Repository Class configuration
        if (isset($config['defaultRepositoryClass'])) {
            $configuration->setDefaultRepositoryClassName($config['defaultRepositoryClass']);
        }
        // Naming strategy for ORM
        $configuration->setNamingStrategy(new $config['namingStrategyClass']());
        return $configuration;
    }