addDocumentNamespace() public method

Adds a namespace under a certain alias.
public addDocumentNamespace ( string $alias, string $namespace )
$alias string
$namespace string
 private function loadDoctrineMongoDBConfiguration(Application $app)
 {
     $app['doctrine.odm.mongodb.configuration'] = $app->share(function () use($app) {
         $config = new Configuration();
         $config->setMetadataCacheImpl($app['doctrine.odm.mongodb.metadata_cache']);
         if (isset($app['doctrine.odm.mongodb.connection_options']['database'])) {
             $config->setDefaultDB($app['doctrine.odm.mongodb.connection_options']['database']);
         }
         $chain = new MappingDriverChain();
         $usingAnnotations = false;
         foreach ((array) $app['doctrine.odm.mongodb.documents'] as $document) {
             switch ($document['type']) {
                 case 'annotation':
                     $driver = AnnotationDriver::create((array) $document['path']);
                     $chain->addDriver($driver, $document['namespace']);
                     $usingAnnotations = true;
                     break;
                 case 'yml':
                     $driver = new YamlDriver((array) $document['path'], '.yml');
                     $chain->addDriver($driver, $document['namespace']);
                     break;
                 case 'xml':
                     $driver = new XmlDriver((array) $document['path'], '.xml');
                     $chain->addDriver($driver, $document['namespace']);
                     break;
                 default:
                     throw new \InvalidArgumentException(sprintf('"%s" is not a recognized driver', $document['type']));
                     break;
             }
             // add namespace alias
             if (isset($document['alias'])) {
                 $config->addDocumentNamespace($document['alias'], $document['namespace']);
             }
         }
         if ($usingAnnotations) {
             AnnotationDriver::registerAnnotationClasses();
         }
         $config->setMetadataDriverImpl($chain);
         $config->setProxyDir($app['doctrine.odm.mongodb.proxies_dir']);
         $config->setProxyNamespace($app['doctrine.odm.mongodb.proxies_namespace']);
         $config->setAutoGenerateProxyClasses($app['doctrine.odm.mongodb.auto_generate_proxies']);
         $config->setHydratorDir($app['doctrine.odm.mongodb.hydrators_dir']);
         $config->setHydratorNamespace($app['doctrine.odm.mongodb.hydrators_namespace']);
         $config->setAutoGenerateHydratorClasses($app['doctrine.odm.mongodb.auto_generate_hydrators']);
         $config->setLoggerCallable($app['doctrine.odm.mongodb.logger_callable']);
         return $config;
     });
 }
 /**
  * (register hook)
  *
  * @param \Silex\Application $application
  */
 public function register(Application $application)
 {
     /*
      * MongoDB Connection Manager Closure.
      *
      * @param string $connectionKey
      *
      * @return \Doctrine\MongoDB\Connection
      */
     $application['doctrine_mongodb.connection'] = $application->protect(function ($connectionKey = 'default') use($application) {
         if (isset($application['doctrine_mongodb']['connections'][$connectionKey])) {
             $connectionOptions = $application['doctrine_mongodb']['connections'][$connectionKey];
             if (isset($connectionOptions['server'])) {
                 $server = $connectionOptions['server'];
             } else {
                 $defaults = array('host', 'database', 'port');
                 $missing = array_diff_key(array_flip($defaults), $connectionOptions);
                 if (!empty($missing)) {
                     throw new \RuntimeException(sprintf('The MongoDB connection options "%s" is missing', join(', ', $missing)));
                 }
                 $server = sprintf('mongodb://%s:%s/%s', $connectionOptions['host'], $connectionOptions['port'], $connectionOptions['database']);
             }
             $options = isset($connectionOptions['options']) ? $connectionOptions['options'] : array();
             return new Connection($server, $options, $application['doctrine_mongodb.configuration']($connectionKey));
         }
         throw new \InvalidArgumentException(sprintf('Unable to find the MongoDB "%s" connection options', $connectionKey));
     });
     /*
      * MongoDB Configuration Manager Closure.
      *
      * @param string $configurationKey  The configuration key
      *
      * @return Configuration
      */
     $application['doctrine_mongodb.configuration'] = $application->protect(function ($configurationKey = 'default') use($application) {
         $configuration = new Configuration();
         $options = array('db_name' => 'default', 'proxies_dir' => sys_get_temp_dir(), 'proxies_namespace' => 'DoctrineMongoDBProxy', 'auto_generate_proxies' => true, 'hydrators_dir' => sys_get_temp_dir(), 'hydrators_namespace' => 'DoctrineMongoDBHydrator', 'metadata_cache' => '\\Doctrine\\Common\\Cache\\ArrayCache', 'auto_generate_hydrators' => true, 'logger_callable' => null);
         $doctrineMongoDB = $application['doctrine_mongodb'];
         foreach ($options as $key => $value) {
             if (isset($doctrineMongoDB[$key])) {
                 $options[$key] = $doctrineMongoDB[$key];
             }
         }
         if (isset($doctrineMongoDB['document_managers'][$configurationKey]['mapping'])) {
             $mappingChain = $doctrineMongoDB['document_managers'][$configurationKey]['mapping'];
             $driverChain = new MappingDriverChain();
             foreach ($mappingChain as $name => $mapping) {
                 $namespace = isset($mapping['alias']) ? $mapping['alias'] : $name;
                 $configuration->addDocumentNamespace($namespace, $mapping['namespace']);
                 $mappingPath = (array) $mapping['path'];
                 $mappingNamespace = $mapping['namespace'];
                 $isAnnotation = false;
                 switch (strtolower($mapping['type'])) {
                     case 'annotation':
                         $driver = $configuration->newDefaultAnnotationDriver($mappingPath);
                         $isAnnotation = true;
                         break;
                     case 'xml':
                         $driver = new XmlDriver($mappingPath);
                         break;
                     case 'yml':
                         $driver = new YamlDriver($mappingPath);
                         break;
                     default:
                         throw new \RuntimeException(sprintf('MongoDB Mapping Type "%s" is not supported or unknown', $mapping['type']));
                 }
                 $driverChain->addDriver($driver, $mappingNamespace);
                 if (true === $isAnnotation) {
                     AnnotationDriver::registerAnnotationClasses();
                 }
                 $configuration->setMetadataDriverImpl($driverChain);
             }
         }
         $configuration->setProxyDir($options['proxies_dir']);
         $configuration->setProxyNamespace($options['proxies_namespace']);
         $configuration->setAutoGenerateProxyClasses($options['auto_generate_proxies']);
         $configuration->setHydratorDir($options['hydrators_dir']);
         $configuration->setHydratorNamespace($options['hydrators_namespace']);
         $configuration->setAutoGenerateHydratorClasses($options['auto_generate_hydrators']);
         $metaDataCacheClass = $options['metadata_cache'];
         if (!class_exists($metaDataCacheClass, true)) {
             throw new \RuntimeException(sprintf('Unable to find the Doctrine Metadata Cache "%s"', $metaDataCacheClass));
         }
         $configuration->setMetadataCacheImpl(new $metaDataCacheClass());
         $configuration->setDefaultDB($options['db_name']);
         return $configuration;
     });
     /*
      * The MongoDB Document Manager Closure.
      *
      * @param string $managerKey
      *
      * @return \Doctrine\Common\Persistence\ObjectManager
      */
     $application['doctrine_mongodb.document_manager'] = $application->protect(function ($managerKey) use($application) {
         $key = strtolower($managerKey);
         $serviceKey = sprintf('doctrine_mongodb.%s_document_manager', $key);
         if (!$application->offsetExists($serviceKey)) {
             $application[$serviceKey] = DocumentManager::create($application['doctrine_mongodb.connection']($key), $application['doctrine_mongodb.configuration']($key));
         }
         return $application[$serviceKey];
     });
 }