/**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     $this->package('opensolutions/doctrine2bridge', 'doctrine2bridge');
     $this->app['config']->package('opensolutions/doctrine2bridge', __DIR__ . '/../config');
     $this->app->singleton('d2cachebridge', function ($app) {
         $cacheClass = "\\Doctrine\\Common\\Cache\\" . \Config::get('doctrine2bridge::cache.type');
         if (!class_exists($cacheClass)) {
             throw new Exception\ImplementationNotFound($cacheClass);
         }
         $cache = new $cacheClass();
         if (\Config::has('doctrine2bridge::cache.namespace')) {
             $cache->setNamespace(\Config::get('doctrine2bridge::cache.namespace'));
         }
         switch (\Config::get('doctrine2bridge::cache.type')) {
             case 'MemcacheCache':
                 $memcache = new \Memcache();
                 if (!\Config::has('doctrine2bridge::cache.memcache.servers') || !count(\Config::get('doctrine2bridge::cache.memcache.servers'))) {
                     throw new Exception\Configuration('No servers defined for Doctrine2Bridge\\Doctrine2CacheBridgeServiceProvider - Memcache');
                 }
                 foreach (\Config::get('doctrine2bridge::cache.memcache.servers') as $server) {
                     $memcache->addServer($server['host'], isset($server['port']) ? $server['port'] : 11211, isset($server['persistent']) ? $server['persistent'] : false, isset($server['weight']) ? $server['weight'] : 1, isset($server['timeout']) ? $server['timeout'] : 1, isset($server['retry_int']) ? $server['retry_int'] : 15);
                     $cache->setMemcache($memcache);
                 }
                 break;
         }
         return $cache;
     });
     // Shortcut so developers don't need to add an Alias in app/config/app.php
     \App::booting(function () {
         $loader = \Illuminate\Foundation\AliasLoader::getInstance();
         $loader->alias('D2Cache', 'Doctrine2Bridge\\Support\\Facades\\Doctrine2Cache');
     });
 }
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     $this->registerCache();
     // Shortcut so developers don't need to add an Alias in app/config/app.php
     \App::booting(function () {
         $loader = \Illuminate\Foundation\AliasLoader::getInstance();
         $loader->alias('D2Cache', 'Doctrine2l5\\Support\\Facades\\Doctrine2Cache');
     });
 }
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     $this->package('opensolutions/doctrine2bridge', 'doctrine2bridge');
     $this->app['config']->package('opensolutions/doctrine2bridge', __DIR__ . '/../config');
     $d2config = $this->d2config = \Config::get('doctrine2bridge::doctrine');
     $this->app->singleton('d2embridge', function ($app) use($d2config) {
         $dconfig = new \Doctrine\ORM\Configuration();
         $driver = new \Doctrine\ORM\Mapping\Driver\XmlDriver(array($d2config['paths']['xml_schema']));
         $dconfig->setMetadataDriverImpl($driver);
         $dconfig->setProxyDir($d2config['paths']['proxies']);
         $dconfig->setProxyNamespace($d2config['namespaces']['proxies']);
         $dconfig->setAutoGenerateProxyClasses($d2config['autogen_proxies']);
         return \Doctrine\ORM\EntityManager::create($d2config['connection'], $dconfig);
     });
     // Shortcut so developers don't need to add an Alias in app/config/app.php
     \App::booting(function () {
         $loader = \Illuminate\Foundation\AliasLoader::getInstance();
         $loader->alias('D2EM', 'Doctrine2Bridge\\Support\\Facades\\Doctrine2');
     });
 }
 private function registerRepositoryFacade()
 {
     $this->app->bind(D2Repository::class, function ($app) {
         return new D2Repository();
     });
     \App::booting(function () {
         $loader = \Illuminate\Foundation\AliasLoader::getInstance();
         $loader->alias('D2R', 'Doctrine2Bridge\\Support\\Facades\\Doctrine2Repository');
     });
 }