/** * @param MappingDriver $driver */ public function __construct(MappingDriver $driver) { $this->setDriver($driver); $this->chain = new MappingDriverChain(); $this->chain->setDefaultDriver($this->getDriver()); $this->boot(); }
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); }); }
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)); }
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; }
/** * 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; }