Ejemplo n.º 1
0
 /**
  * @param MappingDriver $driver
  */
 public function __construct(MappingDriver $driver)
 {
     $this->setDriver($driver);
     $this->chain = new MappingDriverChain();
     $this->chain->setDefaultDriver($this->getDriver());
     $this->boot();
 }
Ejemplo n.º 2
0
 public function register(Application $app)
 {
     $app['orm.em.paths'] = $app->share(function () {
         return array();
     });
     $app['orm.event_manager'] = $app->share(function () use($app) {
         return new EventManager();
     });
     $app['orm.config'] = $app->share(function () use($app) {
         return Setup::createConfiguration($app['debug']);
     });
     $app['orm.anotation_reader'] = $app->share(function () use($app) {
         $annotationReader = new AnnotationReader();
         $cache = $app['orm.config']->getMetadataCacheImpl();
         return new CachedReader($annotationReader, $cache);
     });
     $app['orm.default_anotation_driver'] = $app->share(function () use($app) {
         AnnotationRegistry::registerFile($app['vendor_dir'] . '/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php');
         return new AnnotationDriver($app['orm.anotation_reader'], $app['orm.em.paths']);
     });
     $app['orm.em'] = $app->share(function () use($app) {
         $annotationReader = $app['orm.anotation_reader'];
         $eventManager = $app['orm.event_manager'];
         $driverChain = new MappingDriverChain();
         $driverChain->setDefaultDriver($app['orm.default_anotation_driver']);
         DoctrineExtensions::registerMappingIntoDriverChainORM($driverChain, $annotationReader);
         $loggableListener = new LoggableListener();
         $loggableListener->setAnnotationReader($annotationReader);
         $loggableListener->setUsername('admin');
         $eventManager->addEventSubscriber($loggableListener);
         $config = $app['orm.config'];
         $config->setMetadataDriverImpl($driverChain);
         return EntityManager::create($app['db.default_options'], $config, $eventManager);
     });
 }
Ejemplo n.º 3
0
 public function testDefaultDriverGetAllClassNames()
 {
     $companyDriver = $this->getMock('Doctrine\\Common\\Persistence\\Mapping\\Driver\\MappingDriver');
     $defaultDriver = $this->getMock('Doctrine\\Common\\Persistence\\Mapping\\Driver\\MappingDriver');
     $chain = new MappingDriverChain();
     $companyDriver->expects($this->once())->method('getAllClassNames')->will($this->returnValue(array('Doctrine\\Tests\\Models\\Company\\Foo')));
     $defaultDriver->expects($this->once())->method('getAllClassNames')->will($this->returnValue(array('Other\\Class')));
     $chain->setDefaultDriver($defaultDriver);
     $chain->addDriver($companyDriver, 'Doctrine\\Tests\\Models\\Company');
     $classNames = $chain->getAllClassNames();
     $this->assertEquals(array('Doctrine\\Tests\\Models\\Company\\Foo', 'Other\\Class'), $classNames);
 }
 /**
  * @group DDC-1412
  */
 public function testDefaultDriver()
 {
     $companyDriver = $this->getMock('Doctrine\\Common\\Persistence\\Mapping\\Driver\\MappingDriver');
     $dafaultDriver = $this->getMock('Doctrine\\Common\\Persistence\\Mapping\\Driver\\MappingDriver');
     $entityClassName = 'Doctrine\\Tests\\ORM\\Mapping\\DriverChainEntity';
     $managerClassName = 'Doctrine\\Tests\\Models\\Company\\CompanyManager';
     $chain = new MappingDriverChain();
     $companyDriver->expects($this->never())->method('loadMetadataForClass');
     $companyDriver->expects($this->once())->method('isTransient')->with($this->equalTo($managerClassName))->will($this->returnValue(false));
     $dafaultDriver->expects($this->never())->method('loadMetadataForClass');
     $dafaultDriver->expects($this->once())->method('isTransient')->with($this->equalTo($entityClassName))->will($this->returnValue(true));
     $this->assertNull($chain->getDefaultDriver());
     $chain->setDefaultDriver($dafaultDriver);
     $chain->addDriver($companyDriver, 'Doctrine\\Tests\\Models\\Company');
     $this->assertSame($dafaultDriver, $chain->getDefaultDriver());
     $this->assertTrue($chain->isTransient($entityClassName));
     $this->assertFalse($chain->isTransient($managerClassName));
 }
Ejemplo n.º 5
0
 private function createDriverChain(Configuration $config)
 {
     switch ($this->config['driver']) {
         case self::DRIVER_ANNOTATION:
             $driver = $config->newDefaultAnnotationDriver($this->config['paths'], true);
             break;
         case self::DRIVER_XML:
             $driver = new XmlDriver($this->config['paths']);
             break;
         case self::DRIVER_YAML:
             $driver = new YamlDriver($this->config['paths']);
             break;
         default:
             throw new Exception\InvalidDriver('Valid driver types are: annotation, yaml, xml');
     }
     $chain = new MappingDriverChain();
     $chain->setDefaultDriver($driver);
     return $chain;
 }
Ejemplo n.º 6
0
 /**
  * Creates the driver chain based on the default driver type. The chain can be retrieved
  * later and added to (for example, in other Tonis packages).
  *
  * @param Configuration       $ormConfig
  * @param array|Configuration $config
  * @return MappingDriverChain
  */
 private static function createDriverChain(Configuration $ormConfig, array $config)
 {
     $chain = new MappingDriverChain();
     $paths = $config['driver']['paths'];
     if (empty($paths)) {
         return $chain;
     }
     switch ($config['driver']['type']) {
         case self::DRIVER_ANNOTATION:
             $driver = $ormConfig->newDefaultAnnotationDriver($paths, $config['driver']['simple']);
             break;
         case self::DRIVER_XML:
             $driver = new XmlDriver($paths);
             break;
         case self::DRIVER_YAML:
             $driver = new YamlDriver($paths);
             break;
         default:
             throw new Exception\InvalidDriver('Valid driver types are: annotation, yaml, xml');
     }
     $chain->setDefaultDriver($driver);
     return $chain;
 }