/** * @param array $options * @return \Doctrine\ORM\EntityManager */ protected function _createEntityManager() { $options = $this->_options; $cache = $this->_setupCache($options); if (!isset($options['proxyDir']) || !file_exists($options['proxyDir'])) { throw new ZendX_Doctrine2_Exception("No Doctrine2 'proxyDir' option was given, but is required."); } if (!isset($options['proxyNamespace'])) { $options['proxyNamespace'] = 'MyProject/Proxies'; } if (!isset($options['autoGenerateProxyClasses'])) { $options['autoGenerateProxyClasses'] = true; } if (!isset($options['useCExtension'])) { $options['useCExtension'] = false; } $eventManager = new \Doctrine\Common\EventManager(); $config = new \Doctrine\ORM\Configuration(); $config->setMetadataCacheImpl($cache); $config->setQueryCacheImpl($cache); $config->setProxyDir($options['proxyDir']); $config->setProxyNamespace($options['proxyNamespace']); $config->setUseCExtension((bool) $options['useCExtension']); if (!isset($options['connectionOptions']) || !is_array($options['connectionOptions'])) { throw new ZendX_Doctrine2_Exception("Invalid Doctrine DBAL Connection Options given."); } $connectionOptions = $options['connectionOptions']; if (isset($options['sqllogger'])) { if (is_string($options['sqllogger']) && class_exists($options['sqllogger'])) { $logger = new $options['sqllogger'](); if (!$logger instanceof \Doctrine\DBAL\Logging\SqlLogger) { throw new ZendX_Doctrine2_Exception("Invalid SqlLogger class specified, has to implement \\Doctrine\\DBAL\\Logging\\SqlLogger"); } $config->setSqlLogger($logger); } else { throw new ZendX_Doctrine2_Exception("Invalid SqlLogger configuration specified, have to give class string."); } } $conn = \Doctrine\DBAL\DriverManager::getConnection($connectionOptions, $config, $eventManager); $this->_setupMetadataDriver($options, $config, $cache, $conn); $em = \Doctrine\ORM\EntityManager::create($conn, $config, $eventManager); $registry = Zend_Registry::getInstance(); $registry->em = $em; return $em; }