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')); }