Exemple #1
0
 /**
  * creates an object via injection
  *
  * If the class to create an instance of contains a static __bindings() method
  * this method will be used to configure the ioc bindings before using the ioc
  * container to create the instance.
  *
  * @api
  * @param   string  $className    full qualified class name of class to create an instance of
  * @param   string  $projectPath  path to project
  * @return  \stubbles\App
  */
 public static function createInstance(string $className, string $projectPath) : App
 {
     Runtime::reset();
     self::$projectPath = $projectPath;
     $binder = new Binder();
     foreach (static::getBindingsForApp($className) as $bindingModule) {
         if (is_string($bindingModule)) {
             $bindingModule = new $bindingModule();
         }
         if ($bindingModule instanceof BindingModule) {
             $bindingModule->configure($binder, $projectPath);
         } elseif ($bindingModule instanceof \Closure) {
             $bindingModule($binder, $projectPath);
         } else {
             throw new \InvalidArgumentException('Given module class ' . get_class($bindingModule) . ' is not an instance of stubbles\\ioc\\module\\BindingModule');
         }
     }
     return $binder->getInjector()->getInstance($className);
 }
 /**
  * clean up test environment
  */
 public function tearDown()
 {
     Runtime::reset();
 }