Example #1
0
 public function testChildInjectorIsNewInstance()
 {
     // Arrange
     $injector = new Injector(null);
     $b = $injector->getChild();
     $this->assertNotSame($injector, $b);
 }
Example #2
0
 /**
  * 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));
 }