public static function InjectionHandler($class, $method = "__construct")
 {
     $class = new ReflectionClass($class);
     // 指定されたメソッドが無い場合、インスタンスを返す。
     if (!$class->hasMethod($method)) {
         return $class->newInstance();
     }
     $params = $class->getMethod($method)->getParameters();
     // 引数がある場合は、タイプヒンティングを引数に自身を呼び出し返す。
     if (!empty($params)) {
         $params = array_map(function ($param) {
             if ($param->getClass() instanceof ReflectionClass) {
                 return Handler::InjectionHandler($param->getClass()->name);
             }
         }, $params);
         // コンストラクタの場合にはインスタンスに引き渡し実行、それ以外の場合にはインスタンス起動後メソッドに引き渡し返す。
         if ($method === "__construct") {
             return $class->newInstanceArgs($params);
         } else {
             return call_user_func_array(array($class->newInstance(), $method), $params);
         }
     } else {
         // コンストラクタの場合にはインスタンスを返す。
         if ($method === "__construct") {
             return $class->newInstance();
         } else {
             return call_user_func(array($class->newInstance(), $method));
         }
     }
 }
 /**
  * @test
  */
 public function handler2()
 {
     $blogname = \Apps\Handler::InjectionHandler(\Apps\Controllers\IndexController::class, "getAction");
     $this->assertEquals("TestBlog", $blogname);
 }