尝试将函数作为参数传递给#34;函数名必须是字符串"

时间:2018-03-20 14:59:24

标签: php slim

所以我正在使用Slim框架为php开发一个应用程序,我正在尝试编写一个自定义路由" helper"使添加路由更容易一点,我得到错误"函数名称必须是字符串"在尝试运行代码时。

这是我的路线助手:

<?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();
});

我一直在寻找一个小时左右的解决方案,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

尝试使用以下

<?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;
                });
        }
    }