public function testCreateDefinition() { $definition = new Definition('Demo', array(new Reference('service_id'))); $definition->addArgument('welcome')->setProperty('message', 'Hello world')->addMethodCall('setMessage', array('Just Hello'))->setAbstract('DemoInterface')->share(); $this->assertEquals('Demo', $definition->getClass()); $this->assertCount(2, $definition->getArgument()->all()); $this->assertInstanceOf('\\Borobudur\\DependencyInjection\\Reference', $definition->getArgument()->get(0)); $this->assertCount(1, $definition->getProperty()->all()); $this->assertEquals('Hello world', $definition->getProperty()->get('message')); $this->assertCount(1, $definition->getMethodCall()->all()); $this->assertSame(array('setMessage', array('Just Hello')), $definition->getMethodCall()->get(0)); $this->assertTrue($definition->isAbstract()); $this->assertEquals('DemoInterface', $definition->getAbstract()); $this->assertTrue($definition->isShared()); }
/** * Add tags on definition. * * @param Definition $definition * @param string $id * @param array $service */ private function addDefinitionTagsFromArray(Definition &$definition, $id, array $service) { if ($this->isArrayServiceHasTags($service)) { foreach ($service['tags'] as $tag) { if (!isset($tag['name'])) { throw new InvalidArgumentException(sprintf('Undefined tag name on service "%s"', $id)); } $name = $tag['name']; unset($tag['name']); $definition->addTag($name, $tag); } } }
/** * Constructor. * * @param string $class * @param string $abstract * @param array $arguments */ public function __construct($class, $abstract, array $arguments = array()) { parent::__construct($class, $arguments); $this->setAbstract($abstract); }
/** * Register abstract definition if possible. * * @param string $id * @param Definition $definition */ private function setAlias($id, Definition $definition) { if ($definition->isAbstract()) { $class = $definition->getAbstract(); } else { $class = $definition->getClass(); } $class = '\\' . ltrim($class, '\\'); $this->aliases[$class][] = $id; $this->lockAlias[$id] = true; }