public function testGetInstantiator() { $definition = new ClassDefinition('Foo'); $definition->setInstantiator('__construct'); $this->assertNull($definition->getInstantiator('Bar')); $this->assertEquals('__construct', $definition->getInstantiator('Foo')); }
public function testNewInstanceCanHandleComplexCallback() { $definitionList = new DefinitionList(array($classdefB = new Definition\ClassDefinition('ZendTest\\Di\\TestAsset\\CallbackClasses\\B'), $classdefC = new Definition\ClassDefinition('ZendTest\\Di\\TestAsset\\CallbackClasses\\C'), new Definition\RuntimeDefinition())); $classdefB->setInstantiator('ZendTest\\Di\\TestAsset\\CallbackClasses\\B::factory'); $classdefB->addMethod('factory', true); $classdefB->addMethodParameter('factory', 'c', array('type' => 'ZendTest\\Di\\TestAsset\\CallbackClasses\\C', 'required' => true)); $classdefB->addMethodParameter('factory', 'params', array('type' => 'Array', 'required' => false)); $di = new Di($definitionList); $b = $di->get('ZendTest\\Di\\TestAsset\\CallbackClasses\\B', array('params' => array('foo' => 'bar'))); $this->assertInstanceOf('ZendTest\\Di\\TestAsset\\CallbackClasses\\B', $b); $this->assertInstanceOf('ZendTest\\Di\\TestAsset\\CallbackClasses\\C', $b->c); $this->assertEquals(array('foo' => 'bar'), $b->params); }