public function configureInstance(DependencyInjector $di, $instanceData) { $im = $di->getInstanceManager(); foreach ($instanceData as $target => $data) { switch (strtolower($target)) { case 'aliases': case 'alias': foreach ($data as $aliasName => $className) { $im->addAlias($aliasName, $className); } break; case 'properties': case 'property': foreach ($data as $classOrAlias => $properties) { foreach ($properties as $propName => $propValue) { $im->setProperty($classOrAlias, $propName, $propValue); } } break; case 'preferences': case 'preferredinstances': case 'preferredinstance': foreach ($data as $classOrAlias => $preferredValueOrValues) { if (is_array($preferredValueOrValues)) { foreach ($preferredValueOrValues as $preferredValue) { $im->addPreferredInstance($classOrAlias, $preferredValue); } } else { $im->addPreferredInstance($classOrAlias, $preferredValueOrValues); } } } } }
public function testConfigurationCanConfigureInstanceManagerWithIniFile() { $ini = new \Zend\Config\Ini(__DIR__ . '/_files/sample.ini', 'section-a'); $config = new Configuration($ini->di); $di = new DependencyInjector($config); $im = $di->getInstanceManager(); $this->assertTrue($im->hasAlias('my-repository')); $this->assertEquals('My\RepositoryA', $im->getClassFromAlias('my-repository')); $this->assertTrue($im->hasAlias('my-mapper')); $this->assertEquals('My\Mapper', $im->getClassFromAlias('my-mapper')); $this->assertTrue($im->hasAlias('my-dbAdapter')); $this->assertEquals('My\DbAdapter', $im->getClassFromAlias('my-dbAdapter')); $this->assertTrue($im->hasTypePreferences('my-repository')); $this->assertContains('my-mapper', $im->getTypePreferences('my-repository')); $this->assertTrue($im->hasTypePreferences('my-mapper')); $this->assertContains('my-dbAdapter', $im->getTypePreferences('my-mapper')); $this->assertTrue($im->hasConfiguration('My\DbAdapter')); $expected = array('parameters' => array('username' => 'readonly', 'password' => 'mypassword'), 'methods' => array()); $this->assertEquals($expected, $im->getConfiguration('My\DbAdapter')); $this->assertTrue($im->hasConfiguration('my-dbAdapter')); $expected = array('parameters' => array('username' => 'readwrite'), 'methods' => array()); $this->assertEquals($expected, $im->getConfiguration('my-dbAdapter')); }
/** * @group SetterInjection */ public function testNewInstanceWillResolveSetterInjectionDependenciesWithProperties() { $di = new DependencyInjector(); $im = $di->getInstanceManager(); $im->setProperty('ZendTest\Di\TestAsset\SetterInjection\X', 'one', 1); $im->setProperty('ZendTest\Di\TestAsset\SetterInjection\X', 'two', 2); $y = $di->newInstance('ZendTest\Di\TestAsset\SetterInjection\Y'); $this->assertEquals(1, $y->x->one); $this->assertEquals(2, $y->x->two); }
/** * @param DependencyInjector $di * @return void */ public function __construct(DependencyInjector $di) { $this->di = $di; $this->definition = $di->getDefinition(); $this->instanceManager = $di->getInstanceManager(); }
public function testNewInstanceWillRunArbitraryMethodsAccordingToConfiguration() { $di = new DependencyInjector(); $im = $di->getInstanceManager(); $im->setMethods('ZendTest\Di\TestAsset\ConfigParameter\A', array( 'setSomeInt' => array('value' => 5), 'injectM' => array('m' => 10) )); $b = $di->newInstance('ZendTest\Di\TestAsset\ConfigParameter\B'); $this->assertEquals(5, $b->a->someInt); $this->assertEquals(10, $b->a->m); }
public function configureInstance(DependencyInjector $di, $instanceData) { $im = $di->getInstanceManager(); foreach ($instanceData as $target => $data) { switch (strtolower($target)) { case 'aliases': case 'alias': foreach ($data as $n => $v) { $im->addAlias($n, $v); } break; case 'preferences': case 'preference': foreach ($data as $n => $v) { if (is_array($v)) { foreach ($v as $v2) { $im->addTypePreference($n, $v2); } } else { $im->addTypePreference($n, $v); } } break; default: foreach ($data as $n => $v) { switch ($n) { case 'parameters': case 'parameter': $im->setParameters($target, $v); break; case 'methods': case 'method': $im->setMethods($target, $v); break; } } } } }