/**
  * Return a DIC-IT container, using adapter to respect Pyrite interface.
  *
  * @param Request $request       Current request object.
  * @param string  $containerPath Path to load config from.
  *
  * @return \Pyrite\Container\Container
  */
 public static function build(Request $request, $containerPath)
 {
     $config = new NullConfig();
     if (null !== $containerPath && preg_match('/.*yml$/', $containerPath)) {
         $config = new YML($containerPath);
     }
     if (null !== $containerPath && preg_match('/.*php$/', $containerPath)) {
         $config = new PHP($containerPath);
     }
     $activator = new ActivatorFactory();
     $container = new DICITAdapter($config, $activator);
     $activator->addActivator('security', $container->get('SecurityActivator'), false);
     // initialize the translation engine
     $translationManager = $container->get('TranslationEngine');
     $host = $request->getHttpHost();
     $locale = $container->getParameter('default_locale.' . str_replace('.', '_', $host));
     if ($locale === null) {
         $locale = $container->getParameter('default_locale.default');
     }
     $container->setParameter('current_locale', $locale);
     $translationManager->setLocale($locale);
     $reader = new \Doctrine\Common\Annotations\AnnotationReader();
     \Doctrine\Common\Annotations\AnnotationRegistry::registerLoader(function ($class) {
         return class_exists($class);
     });
     $container->bind('AnnotationReader', $reader);
     $director = $container->get('PyRestDirector');
     $packages = $container->getParameter('crud.packages');
     foreach ($packages as $packageName => $packageConfiguration) {
         $director->buildAll($packageName);
     }
     return $container;
 }
Example #2
0
 /**
  * Handles class instanciation
  * @param  array $serviceConfig
  * @param string $serviceName
  * @return object
  */
 protected function activate($serviceName, $serviceConfig)
 {
     $activator = $this->activatorFactory->getActivator($serviceName, $serviceConfig);
     return $activator->createInstance($this, $serviceName, $serviceConfig);
 }
Example #3
0
 public function testGetActivatorWithRemoteConfigReturnsRemoteActivator()
 {
     $serviceConfig = array('class' => '\\DummyClass', 'remote' => array());
     $factory = new ActivatorFactory();
     $this->assertInstanceOf('\\DICIT\\Activators\\RemoteActivator', $factory->getActivator('myService', $serviceConfig));
 }
Example #4
0
 /**
  * @param AbstractConfig $config
  * @param array          $activators ['activator_name' => 'service_name']
  *
  * @return DICITAdapter
  */
 private function createContainer(AbstractConfig $config)
 {
     $factory = new ActivatorFactory();
     $container = new DICITAdapter($config, $factory);
     foreach ($this->activators as $name => $serviceName) {
         $factory->addActivator($name, $container->get($serviceName), false);
     }
     if (true === $container->has('SecurityActivator')) {
         $factory->addActivator('security', $container->get('SecurityActivator'), false);
     }
     return $container;
 }