尝试将函数作为参数传递 "Function name must be a string"

Trying To Pass Functions as Paramater Gives "Function name must be a string"

所以我正在为 php 使用 Slim 框架开发一个应用程序,我正在尝试编写自定义路由 "helper" 以使添加路由更容易一些,但我收到了错误"Function name must be a string" 尝试 运行 代码时。

这是我的路线助手:

<?php
namespace XSC\API\Core;

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

class RouteHelper {
        public static $request;
        public static $response;

    public static function registerRoute($route, $callback) {
            Slim::$instance->get($route, function (Request $request, Response $response, array $args) {
                self::$request = $request;
                self::$response = $response;

                $callback(self::$request, self::$response, $args);

                return self::$response;
            });
    }
}

这是路线:

<?php
namespace XSC\API\Routes;

use XSC\API\Core\RouteHelper;
use XSC\API\Minecraft;
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

RouteHelper::registerRoute('/minecraft/test', function (Request $request, Response $response, array $args) {
    Minecraft\Rcon::connect('all-the-mods-');

    $response->getBody()->write(Minecraft\Rcon::command("testing 123"));

    Minecraft\Rcon::disconnect();
});

我一直在寻找解决方案大约一个小时,如有任何帮助,我们将不胜感激。

尝试以下

<?php
namespace XSC\API\Core;

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

    class RouteHelper {
            public static $request;
            public static $response;

        public static function registerRoute($route, $callback) {
                Slim::$instance->get($route, function (Request $request, Response $response, array $args) use ($callback) {
                    self::$request = $request;
                    self::$response = $response;

                    $callback(self::$request, self::$response, $args);

                    return self::$response;
                });
        }
    }