private function invoke($fn, $params = [])
  {
    if (is_callable($fn)) {
      call_user_func_array($fn, $params);
    }
    elseif (preg_match('/@/', $fn) !== false) {
      list($controller, $method) = explode('@', $fn);
      if (class_exists($controller)) {
        // First check if is a static method, directly trying to invoke it.
        // If isn't a valid static method, we will try as a normal method invocation.
        if (call_user_func_array(array(new $controller(), $method), $params) === false) {
          // Try to call the method as an non-static method. (the if does nothing, only avoids the notice)
          if (forward_static_call_array(array($controller, $method), $params) === false) ;
        }
      }
    }
  }