/** * @group DDC-2183 */ public function testSetGetSecondLevelCacheConfig() { $mockClass = $this->getMock('Doctrine\\ORM\\Cache\\CacheConfiguration'); $this->assertNull($this->configuration->getSecondLevelCacheConfiguration()); $this->configuration->setSecondLevelCacheConfiguration($mockClass); $this->assertEquals($mockClass, $this->configuration->getSecondLevelCacheConfiguration()); }
/** * Creates a new EntityManager that operates on the given database connection * and uses the given Configuration and EventManager implementations. * * @param \Doctrine\DBAL\Connection $conn * @param \Doctrine\ORM\Configuration $config * @param \Doctrine\Common\EventManager $eventManager */ protected function __construct(Connection $conn, Configuration $config, EventManager $eventManager) { $this->conn = $conn; $this->config = $config; $this->eventManager = $eventManager; $metadataFactoryClassName = $config->getClassMetadataFactoryName(); $this->metadataFactory = new $metadataFactoryClassName(); $this->metadataFactory->setEntityManager($this); $this->metadataFactory->setCacheDriver($this->config->getMetadataCacheImpl()); $this->repositoryFactory = $config->getRepositoryFactory(); $this->unitOfWork = new UnitOfWork($this); $this->proxyFactory = new ProxyFactory($this, $config->getProxyDir(), $config->getProxyNamespace(), $config->getAutoGenerateProxyClasses()); if ($config->isSecondLevelCacheEnabled()) { $cacheClass = $config->getSecondLevelCacheConfiguration()->getCacheClassName(); $this->cache = new $cacheClass($this); } }
/** * @param Configuration $configuration */ protected function setSecondLevelCaching(Configuration $configuration) { if ($this->config->get('doctrine.cache.second_level', false)) { $configuration->setSecondLevelCacheEnabled(true); $cacheConfig = $configuration->getSecondLevelCacheConfiguration(); $cacheConfig->setCacheFactory(new DefaultCacheFactory($cacheConfig->getRegionsConfiguration(), $this->cache->driver())); } }
/** * Apply configured settings regarding Doctrine's second level cache. * * @param array $configuredSettings * @param Configuration $doctrineConfiguration * @return void */ protected function applySecondLevelCacheSettingsToConfiguration(array $configuredSettings, Configuration $doctrineConfiguration) { if (!isset($configuredSettings['enable']) || $configuredSettings['enable'] !== true) { return; } $doctrineConfiguration->setSecondLevelCacheEnabled(); $regionsConfiguration = $doctrineConfiguration->getSecondLevelCacheConfiguration()->getRegionsConfiguration(); if (isset($configuredSettings['defaultLifetime'])) { $regionsConfiguration->setDefaultLifetime($configuredSettings['defaultLifetime']); } if (isset($configuredSettings['defaultLockLifetime'])) { $regionsConfiguration->setDefaultLockLifetime($configuredSettings['defaultLockLifetime']); } if (isset($configuredSettings['regions']) && is_array($configuredSettings['regions'])) { foreach ($configuredSettings['regions'] as $regionName => $regionLifetime) { $regionsConfiguration->setLifetime($regionName, $regionLifetime); } } $cache = new CacheAdapter(); // must use ObjectManager in compile phase... $cache->setCache($this->objectManager->get(CacheManager::class)->getCache('Flow_Persistence_Doctrine_SecondLevel')); $factory = new \Doctrine\ORM\Cache\DefaultCacheFactory($regionsConfiguration, $cache); $doctrineConfiguration->getSecondLevelCacheConfiguration()->setCacheFactory($factory); }