/** * 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; }
/** * 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); }
public function testGetActivatorWithRemoteConfigReturnsRemoteActivator() { $serviceConfig = array('class' => '\\DummyClass', 'remote' => array()); $factory = new ActivatorFactory(); $this->assertInstanceOf('\\DICIT\\Activators\\RemoteActivator', $factory->getActivator('myService', $serviceConfig)); }
/** * @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; }