protected static function invokeObject($callback, $matched = null)
    {
        $last = explode('/', $callback);
        $last = end($last);

        $segments = explode('@', $last);

        $class = $segments[0];
        $method = $segments[1];
        $matched = $matched ? $matched : [];

        if (method_exists($class, self::$singleton)) {
            $instance = call_user_func([$class, self::$singleton]);

            return call_user_func_array([$instance, $method], $matched);
        }

        if (class_exists($class)) {
            $instance = new $class;

            return call_user_func_array([$instance, $method], $matched);
        }

        return false;
    }