public function testAbstract() { $container = new ContainerBuilder(); $container->setDefinition('iqbal', new Definition\AbstractDefinition('\\Borobudur\\DependencyInjection\\Test\\Iqbal', '\\Borobudur\\DependencyInjection\\Test\\WarriorInterface')); $container->setDefinition('battle', new Definition('\\Borobudur\\DependencyInjection\\Test\\Battle')); $battle = $container->get('battle'); $this->assertEquals('iqbal', $battle->warrior->getName()); $this->assertEquals('fighter', $battle->warrior->getType()); $container->setDefinition('tanaka', new Definition\AbstractDefinition('\\Borobudur\\DependencyInjection\\Test\\Tanaka', '\\Borobudur\\DependencyInjection\\Test\\WarriorInterface')); $this->assertTrue($container->has('iqbal')); $battle = $container->get('battle', array('x' => 'a')); $this->assertEquals('tanaka', $battle->warrior->getName()); $this->assertEquals('archer', $battle->warrior->getType()); $this->assertEquals('a', $battle->x); $battle = $container->get('battle', array(new Reference('iqbal'))); $this->assertEquals('iqbal', $battle->warrior->getName()); $this->assertEquals('fighter', $battle->warrior->getType()); $battle = $container->get('battle', array(new Reference('tanaka'), 'a')); $this->assertEquals('tanaka', $battle->warrior->getName()); $this->assertEquals('archer', $battle->warrior->getType()); $this->assertEquals('a', $battle->x); $this->assertTrue($container->has('\\Borobudur\\DependencyInjection\\Test\\WarriorInterface')); $container->set('tanaka', function () { }); $this->assertTrue($container->has('\\Borobudur\\DependencyInjection\\Test\\WarriorInterface')); $this->assertFalse($container->hasAlias('tanaka')); }
/** * Build response from service. * * @param string $serviceId * * @return mixed */ private function getServiceController($serviceId) { if (!$this->container->has($serviceId)) { throw new RuntimeException(sprintf('Service "%s" is undefined.', $serviceId)); } return $this->container->getDi()->create($this->container->get($serviceId)); }
/** * Constructor. * * @param ContainerBuilder $container */ public function __construct(ContainerBuilder $container) { $this->container = $container; if ($container->has('request')) { $this->request = $container->get('request'); } }
/** * Load extension. * * @param array $configs * @param ContainerBuilder $container */ public function load(array $configs, ContainerBuilder $container) { if ($container->has('request')) { new RequestFacade($container->get('request')); } /** @var KernelInterface $kernel */ $kernel = $container->get('kernel'); $routes = $this->buildRouteCollection($configs['router']['routes']); $container->register('route_collection', $routes, true); $kernel->addListenerOnce(KernelEvents::REQUEST, array(new RouterListener($routes, $configs['router']['prefix']), 'onRequest')); Log::$APP_LOG = $configs['log']['name']; $container->register('log', $this->buildLog($configs['log']), true); $container->setDefinition('template', new Definition('Borobudur\\Bundle\\FrameworkBundle\\Template\\TemplateCompiler'))->addArgument(new Reference('container'))->addArgument($configs['template']['app_path'])->share(); $container->setDefinition('acl', new Definition('Borobudur\\Acl\\Acl'))->addArgument(isset($configs['acl']) && isset($configs['acl']['policies']) ? $configs['acl']['policies'] : null)->share(); }