public function testChildInjectorIsNewInstance() { // Arrange $injector = new Injector(null); $b = $injector->getChild(); $this->assertNotSame($injector, $b); }
/** * Read Dependencies And Providers * Make a new (Child)Injector for the requested Object with Providers * Build Dependencies recursively * Build requested Object * * @param Injector $injector * @return mixed */ function get(Injector $injector) { $className = $this->reflector->getClassName(); $dependencies = $this->_getDependencies($className); // print_r($dependencies); if (!empty($dependencies)) { $childInjector = $injector->getChild($this->_getProviders($className)); //recursive build dependencies $params = array_map(function ($dependency) use($childInjector) { return $childInjector->get($dependency['token']); }, $dependencies); } else { $params = []; } return new $className(...array_values($params)); }