コード例 #1
0
 /**
  * Get the extended driver instance which will
  * read the metadata required by extension
  * 
  * @param ORMDriver $ormDriver
  * @throws DriverException if driver was not found in extension
  * @return Gedmo\Mapping\Driver
  */
 private function _getDriver(ORMDriver $ormDriver)
 {
     $driver = null;
     if ($ormDriver instanceof \Doctrine\ORM\Mapping\Driver\DriverChain) {
         $driver = new Driver\Chain();
         foreach ($ormDriver->getDrivers() as $namespace => $nestedOrmDriver) {
             $driver->addDriver($this->_getDriver($nestedOrmDriver), $namespace);
         }
     } else {
         $className = get_class($ormDriver);
         $driverName = substr($className, strrpos($className, '\\') + 1);
         $driverName = substr($driverName, 0, strpos($driverName, 'Driver'));
         // create driver instance
         $driverClassName = $this->_extensionNamespace . '\\Mapping\\Driver\\' . $driverName;
         if (!class_exists($driverClassName)) {
             throw DriverException::extensionDriverNotSupported($driverClassName, $driverName);
         }
         $driver = new $driverClassName();
         if ($driver instanceof \Gedmo\Mapping\Driver\File) {
             $driver->setPaths($ormDriver->getPaths());
         }
     }
     return $driver;
 }