Example #1
0
 public function instantiate(Definition $def)
 {
     $class = $def->getClass();
     $reflector = new \ReflectionClass($class);
     if ($reflector->isInstantiable()) {
         $instance = null;
         $dependencies = $def->getDependencies();
         $arguments = array();
         foreach ($dependencies as $dependency) {
             if ($dependency instanceof Reference) {
                 $arguments[] = $this->get($dependency->getAlias());
             } else {
                 $arguments[] = $dependency;
             }
         }
         $arguments;
         $instance = $reflector->newInstanceArgs($arguments);
         return $instance;
     } else {
         throw new ClassNoInstantiableException("The class '{$class}' is not instantiable.");
     }
 }