/** * 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; }
/** * 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; }