/** * * Tests that a class can be instantiated through the Container. * * @param string $class The expected class. * * @return null * * @dataProvider provideNewInstance * */ public function testNewInstance($class, array $params = array(), array $setter = array()) { if (!$class) { $this->markTestSkipped('No class name passed for testNewInstance().'); } $this->assertInstanceOf($class, $this->di->newInstance($class, $params, $setter)); }
public function testNewInstanceWithOverride() { $instance = $this->container->newInstance('Aura\\Di\\MockParentClass', ['foo' => 'dib']); $expect = 'dib'; $actual = $instance->getFoo(); $this->assertSame($expect, $actual); }
/** * * Creates a new DI container, adds pre-existing service objects, applies * Config classes to define() services, locks the container, and applies * the Config instances to modify() services. * * @param array $services Pre-existing service objects to set into the * container. * * @param array $config_classes A list of Config classes to instantiate and * invoke for configuring the container. * * @param bool $auto_resolve Enable or disable auto-resolve after the * define() step? * * @return Container * */ public function newInstance(array $services = array(), array $config_classes = array(), $auto_resolve = self::ENABLE_AUTO_RESOLVE) { $di = new Container(new Factory()); $di->setAutoResolve($auto_resolve); foreach ($services as $key => $val) { $di->set($key, $val); } $configs = array(); foreach ($config_classes as $class) { $config = $di->newInstance($class); $config->define($di); $configs[] = $config; } $di->lock(); foreach ($configs as $config) { $config->modify($di); } return $di; }