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()); }
/** * Create service. * * @param Definition $definition * @param array $args * * @return InstanceManager */ public function createService(Definition $definition, array $args = array()) { $instance = $this->getDi()->createInstance($definition->getClass(), array_merge($definition->getArgument()->all(), $args)); $instance->callMethods($definition->getMethodCall()->all()); $instance->setProperties($definition->getProperty()->all()); return $instance; }