/**
  * Initialize ORM Metadata drivers.
  *
  * @param array $config ORM Mapping drivers.
  *
  * @return Doctrine\ORM\Mapping\Driver\DriverChain
  */
 private function startORMMetadata(array $config = array())
 {
     $metadataDriver = new \Doctrine\ORM\Mapping\Driver\DriverChain();
     // Default metadata driver configuration
     $defaultMetadataDriver = array('adapterClass' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver', 'mappingNamespace' => '', 'mappingDirs' => array(), 'annotationReaderClass' => 'Doctrine\\Common\\Annotations\\AnnotationReader', 'annotationReaderCache' => $this->defaultCacheInstance, 'annotationReaderNamespaces' => array());
     // Setup AnnotationRegistry
     $this->startAnnotationRegistry($config['annotationRegistry']);
     foreach ($config['drivers'] as $driver) {
         $driver = array_replace_recursive($defaultMetadataDriver, $driver);
         $reflClass = new \ReflectionClass($driver['adapterClass']);
         $nestedDriver = null;
         if ($reflClass->getName() == 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver' || $reflClass->isSubclassOf('Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver')) {
             $annotationReaderClass = $driver['annotationReaderClass'];
             $annotationReader = new $annotationReaderClass();
             $annotationReader->setDefaultAnnotationNamespace('Doctrine\\ORM\\Mapping\\');
             foreach ($driver['annotationReaderNamespaces'] as $alias => $namespace) {
                 $annotationReader->setAnnotationNamespaceAlias($namespace, $alias);
             }
             //$annotationReader->setIgnoreNotImportedAnnotations(false);
             $indexedReader = new \Doctrine\Common\Annotations\CachedReader(new \Doctrine\Common\Annotations\IndexedReader($annotationReader), $this->getCacheInstance($driver['annotationReaderCache']));
             $nestedDriver = $reflClass->newInstance($indexedReader, $driver['mappingDirs']);
         } else {
             $nestedDriver = $reflClass->newInstance($driver['mappingDirs']);
         }
         $metadataDriver->addDriver($nestedDriver, $driver['mappingNamespace']);
     }
     if (($drivers = $metadataDriver->getDrivers()) && count($drivers) == 1) {
         reset($drivers);
         $metadataDriver = $drivers[key($drivers)];
     }
     return $metadataDriver;
 }
Exemple #2
0
 /**
  * Initialize ORM Metadata drivers.
  *
  * @param array $config ORM Mapping drivers.
  *
  * @return Doctrine\ORM\Mapping\Driver\DriverChain
  */
 private function startORMMetadata(array $config = array())
 {
     // print_r($config);
     // exit;
     $metadataDriver = new \Doctrine\ORM\Mapping\Driver\DriverChain();
     // Default metadata driver configuration
     $defaultMetadataDriver = array('adapterClass' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver', 'mappingNamespace' => '', 'mappingDirs' => array(), 'annotationReaderClass' => 'Doctrine\\Common\\Annotations\\AnnotationReader', 'annotationReaderCache' => $this->defaultCacheInstance, 'annotationReaderNamespaces' => array());
     foreach ($config as $driver) {
         // print_r($driver);
         $driver = array_replace_recursive($defaultMetadataDriver, $driver);
         $reflClass = new \ReflectionClass($driver['adapterClass']);
         $nestedDriver = null;
         if ($reflClass->getName() == 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver' || $reflClass->isSubclassOf('Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver')) {
             //echo "if";
             $annotationReaderClass = $driver['annotationReaderClass'];
             //echo $annotationReaderClass;
             $annotationReader = new $annotationReaderClass($this->getCacheInstance($driver['annotationReaderCache']));
             $annotationReader->setDefaultAnnotationNamespace('Doctrine\\ORM\\Mapping\\');
             foreach ($driver['annotationReaderNamespaces'] as $alias => $namespace) {
                 $annotationReader->setAnnotationNamespaceAlias($namespace, $alias);
             }
             $nestedDriver = $reflClass->newInstance($annotationReader, $driver['mappingDirs']);
         } else {
             //echo "else";
             $nestedDriver = $reflClass->newInstance($driver['mappingDirs']);
         }
         // print_r($driver['mappingNamespace'].",".$driver['mappingDirs']);
         //print_r($driver['mappingDirs']);
         $metadataDriver->addDriver($nestedDriver, $driver['mappingNamespace']);
     }
     if (($drivers = $metadataDriver->getDrivers()) && count($drivers) == 1) {
         reset($drivers);
         $metadataDriver = $drivers[key($drivers)];
     }
     return $metadataDriver;
 }