protected function getConfiguration() { $config = new Configuration(); $config->setProxyDir(__DIR__ . '/../../../../Proxies'); $config->setProxyNamespace('Proxies'); $config->setHydratorDir(__DIR__ . '/../../../../Hydrators'); $config->setHydratorNamespace('Hydrators'); $config->setDefaultDB(DOCTRINE_MONGODB_DATABASE); $config->setMetadataDriverImpl($this->createMetadataDriverImpl()); $config->addFilter('testFilter', 'Doctrine\\ODM\\MongoDB\\Tests\\Query\\Filter\\Filter'); $config->addFilter('testFilter2', 'Doctrine\\ODM\\MongoDB\\Tests\\Query\\Filter\\Filter'); return $config; }
/** * * @param \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator * @return object */ public function createService(ServiceLocatorInterface $serviceLocator) { $manifest = $serviceLocator->get('manifest'); $config = new Configuration(); $config->setProxyDir(__DIR__ . '/../../../../Proxies'); $config->setProxyNamespace('Proxies'); $config->setHydratorDir(__DIR__ . '/../../../../Hydrators'); $config->setHydratorNamespace('Hydrators'); $config->setDefaultDB(self::DEFAULT_DB); $config->setMetadataCacheImpl(new ArrayCache()); //create driver chain $chain = new MappingDriverChain(); foreach ($manifest['documents'] as $namespace => $path) { $driver = new AnnotationDriver(new AnnotationReader(), $path); $chain->addDriver($driver, $namespace); } $config->setMetadataDriverImpl($chain); //register filters foreach ($manifest['filters'] as $name => $class) { $config->addFilter($name, $class); } //create event manager $eventManager = new EventManager(); foreach ($manifest['subscribers'] as $subscriber) { $eventManager->addEventSubscriber($serviceLocator->get($subscriber)); } //register annotations AnnotationRegistry::registerLoader(function ($className) { return class_exists($className); }); $conn = new Connection(null, array(), $config); return DocumentManager::create($conn, $config, $eventManager); }
/** * * @param \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator * @return object */ public function createService(ServiceLocatorInterface $serviceLocator) { $manifest = $serviceLocator->get('manifest'); $extension = $serviceLocator->get('extension.odmcore'); $config = new Configuration(); $config->setProxyDir($extension->getProxyDir()); $config->setProxyNamespace('Proxies'); $config->setHydratorDir($extension->getHydratorDir()); $config->setHydratorNamespace('Hydrators'); $config->setDefaultDB($extension->getDefaultDb()); $config->setClassMetadataFactoryName($extension->getClassMetadataFactory()); $config->setMetadataCacheImpl(new ArrayCache()); //create driver chain $chain = new MappingDriverChain(); foreach ($manifest->getModels() as $namespace => $path) { $driver = new AnnotationDriver(new AnnotationReader(), $path); $chain->addDriver($driver, $namespace); } $config->setMetadataDriverImpl($chain); //register filters foreach ($extension->getFilters() as $name => $class) { $config->addFilter($name, $class); } //create event manager $eventManager = new EventManager(); foreach ($manifest->getSubscribers() as $subscriber) { $eventManager->addEventSubscriber($serviceLocator->get($subscriber)); } //register annotations AnnotationRegistry::registerLoader(function ($className) { return class_exists($className); }); $conn = new Connection(null, array(), $config); return ModelManager::create($conn, $config, $eventManager); }
/** * * @param array $config * @return DocumentManager */ public static function createDocumentManager($config, Container $container) { $configuration = new Configuration(); if (is_null($config['eventManager'])) { $evm = new EventManager(); } else { $evm = $config['eventManager']; } $configuration->setProxyDir($config['proxyDir']); $configuration->setProxyNamespace($config['proxyNamespace']); $configuration->setHydratorDir($config['hydratorDir']); $configuration->setHydratorNamespace($config['hydratorNamespace']); $configuration->setAutoGenerateHydratorClasses($config['autoGenerateHydratorClasses']); $configuration->setAutoGenerateProxyClasses($config['autoGenerateProxyClasses']); if (isset($config['metaDataCache'])) { $metadataCache = $config['metaDataCache']; } else { $metadataCache = new $config['metaDataCacheClass'](); $metadataCache->setNamespace($config['cachePrefix']); } $configuration->setMetadataCacheImpl($metadataCache); AnnotationDriver::registerAnnotationClasses(); $reader = new AnnotationReader(); if ($config['cacheAnnotations'] == TRUE) { $reader = new CachedReader($reader, $metadataCache, $config['debug']); } if ($config['indexAnnotations'] == TRUE) { $reader = new IndexedReader($reader); } if (class_exists(\Gedmo\DoctrineExtensions::class)) { \Gedmo\DoctrineExtensions::registerAnnotations(); $configuration->addFilter('soft-deleteable', \Gedmo\SoftDeleteable\Filter\ODM\SoftDeleteableFilter::class); foreach ($config['listeners'] as $listenerName => $enabled) { if ($enabled) { $listener = self::configureListener($listenerName, $reader); $evm->addEventSubscriber($listener); } } } $driverImpl = new AnnotationDriver($reader, $config['documentsDir']); $configuration->setMetadataDriverImpl($driverImpl); $configuration->setDefaultDB($config['dbname']); $logger = new Logger($config['logger'], $config['loggerPrefix']); $configuration->setLoggerCallable([$logger, 'logQuery']); $mongo = new MongoClient($config['uri'], $config['mongoOptions']); $connection = new Connection($mongo); $dm = DocumentManager::create($connection, $configuration, $evm); foreach ($config['filters'] as $filter => $enabled) { if ($enabled) { $dm->getFilterCollection()->enable($filter); } } return $dm; }
/** * @param \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator * @return \Doctrine\ODM\MongoDB\Configuration * @throws \Exception */ public function createService(ServiceLocatorInterface $serviceLocator) { /** @var $options \DoctrineMongoODMModule\Options\Configuration */ $options = $this->getOptions($serviceLocator, 'configuration'); $config = new Configuration(); // logger if ($options->getLogger()) { $logger = $serviceLocator->get($options->getLogger()); $config->setLoggerCallable(array($logger, 'log')); } // proxies $config->setAutoGenerateProxyClasses($options->getGenerateProxies()); $config->setProxyDir($options->getProxyDir()); $config->setProxyNamespace($options->getProxyNamespace()); // hydrators $config->setAutoGenerateHydratorClasses($options->getGenerateHydrators()); $config->setHydratorDir($options->getHydratorDir()); $config->setHydratorNamespace($options->getHydratorNamespace()); // default db $config->setDefaultDB($options->getDefaultDb()); // caching $config->setMetadataCacheImpl($serviceLocator->get($options->getMetadataCache())); // retries $config->setRetryConnect($options->getRetryConnect()); $config->setRetryQuery($options->getRetryQuery()); // Register filters foreach ($options->getFilters() as $alias => $class) { $config->addFilter($alias, $class); } // the driver $config->setMetadataDriverImpl($serviceLocator->get($options->getDriver())); // metadataFactory, if set if ($factoryName = $options->getClassMetadataFactoryName()) { $config->setClassMetadataFactoryName($factoryName); } // custom types foreach ($options->getTypes() as $name => $class) { if (Type::hasType($name)) { Type::overrideType($name, $class); } else { Type::addType($name, $class); } } return $config; }
public function setUp() { $config = new Configuration(); $config->setProxyDir(__DIR__ . '/../../../../Proxies'); $config->setProxyNamespace('Proxies'); $config->setHydratorDir(__DIR__ . '/../../../../Hydrators'); $config->setHydratorNamespace('Hydrators'); $config->setDefaultDB('doctrine_odm_tests'); /* $config->setLoggerCallable(function(array $log) { print_r($log); }); $config->setMetadataCacheImpl(new ApcCache()); */ $config->addFilter('testFilter', 'Doctrine\\ODM\\MongoDB\\Tests\\Query\\Filter\\Filter'); $reader = new AnnotationReader(); $this->annotationDriver = new AnnotationDriver($reader, __DIR__ . '/../../../../Documents'); $config->setMetadataDriverImpl($this->annotationDriver); $conn = new Connection(null, array(), $config); $this->dm = DocumentManager::create($conn, $config); $this->uow = $this->dm->getUnitOfWork(); }
/** * Configures the metadata configuration instance. * * @param Configuration $configuration * @param array $doctrineConfig * @param array $databaseConfig * * @throws Exception */ protected function configureMetadataConfiguration(Configuration $configuration, array $doctrineConfig, array $databaseConfig) { if (isset($doctrineConfig['filters'])) { foreach ($doctrineConfig['filters'] as $name => $filter) { $configuration->addFilter($name, $filter['class']); } } if (isset($doctrineConfig['proxy'])) { if (isset($doctrineConfig['proxy']['auto_generate'])) { $configuration->setAutoGenerateProxyClasses($doctrineConfig['proxy']['auto_generate']); } if (isset($doctrineConfig['proxy']['namespace'])) { $configuration->setProxyNamespace($doctrineConfig['proxy']['namespace']); } if (isset($doctrineConfig['proxy']['directory'])) { $configuration->setProxyDir($doctrineConfig['proxy']['directory']); } } if (!empty($doctrineConfig['repository'])) { $configuration->setDefaultRepositoryClassName($doctrineConfig['repository']); } if (isset($doctrineConfig['hydrator'])) { if (isset($doctrineConfig['hydrator']['directory'])) { $configuration->setHydratorDir($doctrineConfig['hydrator']['directory']); } if (isset($doctrineConfig['hydrator']['namespace'])) { $hydratorNamespace = $doctrineConfig['hydrator']['namespace'] ? $doctrineConfig['hydrator']['namespace'] : self::HYDRATOR_NAMESPACE; $configuration->setHydratorNamespace($hydratorNamespace); } } if (!empty($databaseConfig['connections'][$databaseConfig['default']]['database'])) { $configuration->setDefaultDB($databaseConfig['connections'][$databaseConfig['default']]['database']); } }