public function testGetMethodParameters() { $definition = new ClassDefinition('Foo'); $definition->addMethodParameter("setVar", "var", array('type' => null, 'required' => true, 'default' => 'test')); $this->assertNull($definition->getMethodParameters("Bar", "setVar")); $this->assertEquals(array('Foo::setVar:var' => array("var", null, true, 'test')), $definition->getMethodParameters("Foo", "setVar")); }
/** * @group ZF2-142 */ public function testDiWillInjectDefaultParameters() { $di = new Di(); $classDef = new Definition\ClassDefinition('ZendTest\\Di\\TestAsset\\ConstructorInjection\\OptionalParameters'); $classDef->addMethod('__construct', true); $classDef->addMethodParameter('__construct', 'a', array('type' => false, 'required' => false, 'default' => null)); $classDef->addMethodParameter('__construct', 'b', array('type' => false, 'required' => false, 'default' => 'defaultConstruct')); $classDef->addMethodParameter('__construct', 'c', array('type' => false, 'required' => false, 'default' => array())); $di->definitions()->addDefinition($classDef, false); $optionalParams = $di->newInstance('ZendTest\\Di\\TestAsset\\ConstructorInjection\\OptionalParameters'); $this->assertSame(null, $optionalParams->a); $this->assertSame('defaultConstruct', $optionalParams->b); $this->assertSame(array(), $optionalParams->c); }
/** * @group ZF2-260 */ public function testDiWillInjectClassNameAsStringAtCallTime() { $di = new Di(); $classDef = new Definition\ClassDefinition('ZendTest\\Di\\TestAsset\\SetterInjection\\D'); $classDef->addMethod('setA', true); $classDef->addMethodParameter('setA', 'a', array('type' => false, 'required' => true)); $di->definitions()->addDefinition($classDef, false); $d = $di->get('ZendTest\\Di\\TestAsset\\SetterInjection\\D', array('a' => 'ZendTest\\Di\\TestAsset\\SetterInjection\\A')); $this->assertSame($d->a, 'ZendTest\\Di\\TestAsset\\SetterInjection\\A'); }
public function testInjectionCanHandleMultipleInjectionsWithMultipleArguments() { $definitionList = new DefinitionList(array($classdef = new Definition\ClassDefinition('ZendTest\\Di\\TestAsset\\InjectionClasses\\A'), new Definition\RuntimeDefinition())); $classdef->addMethod('injectSplitDependency'); $classdef->addMethodParameter('injectSplitDependency', 'b', array('required' => true, 'type' => 'ZendTest\\Di\\TestAsset\\InjectionClasses\\B')); $classdef->addMethodParameter('injectSplitDependency', 'somestring', array('required' => true, 'type' => null)); /** * First test that this works with a single call */ $di = new Di($definitionList); $di->instanceManager()->setInjections('ZendTest\\Di\\TestAsset\\InjectionClasses\\A', array('injectSplitDependency' => array('b' => 'ZendTest\\Di\\TestAsset\\InjectionClasses\\B', 'somestring' => 'bs-id'))); $a = $di->newInstance('ZendTest\\Di\\TestAsset\\InjectionClasses\\A'); $this->assertInstanceOf('ZendTest\\Di\\TestAsset\\InjectionClasses\\B', $a->bs[0]); $this->assertEquals('bs-id', $a->bs[0]->id); /** * Next test that this works with multiple calls */ $di = new Di($definitionList); $di->instanceManager()->setInjections('ZendTest\\Di\\TestAsset\\InjectionClasses\\A', array('injectSplitDependency' => array(array('b' => 'ZendTest\\Di\\TestAsset\\InjectionClasses\\B', 'somestring' => 'bs-id'), array('b' => 'ZendTest\\Di\\TestAsset\\InjectionClasses\\C', 'somestring' => 'bs-id-for-c')))); $a = $di->newInstance('ZendTest\\Di\\TestAsset\\InjectionClasses\\A'); $this->assertInstanceOf('ZendTest\\Di\\TestAsset\\InjectionClasses\\B', $a->bs[0]); $this->assertEquals('bs-id', $a->bs[0]->id); $this->assertInstanceOf('ZendTest\\Di\\TestAsset\\InjectionClasses\\C', $a->bs[1]); $this->assertEquals('bs-id-for-c', $a->bs[1]->id); }
public function testDiWillInjectDependenciesForAlias() { $di = new Di; // for setter injection, the dependency is not required, thus it must be forced $classDef = new Definition\ClassDefinition('ZendTest\Di\TestAsset\SetterInjection\B'); $classDef->addMethod('setA', false); $classDef->addMethodParameter('setA', 'a', array('type' => 'ZendTest\Di\TestAsset\SetterInjection\A', 'required' => false)); $di->definitions()->addDefinition($classDef, false); $di->instanceManager()->addAlias('b_alias', 'ZendTest\Di\TestAsset\SetterInjection\B'); $di->instanceManager()->setInjections('b_alias', array('ZendTest\Di\TestAsset\SetterInjection\A')); $b = $di->get('b_alias'); $this->assertInstanceOf('ZendTest\Di\TestAsset\SetterInjection\A', $b->a); }