Slim3无法将Slim \ Http \ Response类型的对象用作数组

时间:2019-07-31 20:04:31

标签: php jwt slim slim-3

我无法在JWT中间件设置中添加错误输出。

我收到此错误:Cannot use object of type Slim\Http\Response as array

我正在使用Slim 3和slim-jwt-auth软件包,我正在使用https://github.com/tuupola/slim-jwt-auth#error上的文档中的示例代码

区别在于我打电话给\Slim\Middleware\JwtAuthentication而不是Tuupola\Middleware\JwtAuthentication。如果我使用该类找不到。一切正常,直到我想将错误输出添加到中间件设置中,这是我的代码:

    $app->add(new \Slim\Middleware\JwtAuthentication([
    "path" => "/mypath",
    "passthrough" => "/mypath/get-auth",
    "secret" => getenv("SKEY"),
    "secure" => false,
    "error" => function ($response, $args) {
      $data = array();
      $data["status"] = "error";
      $data["message"] = $args["message"];
      return $response
        ->withHeader("Content-Type", "application/json")
        ->getBody()->write(
         json_encode($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); 
      }
    ]));

错误输出表明它来自行$data["message"] = $args["message"];

我是在看问题但没有看到问题吗?

1 个答案:

答案 0 :(得分:2)

"error"闭包的函数签名为:

function ($request, $response, $args): Response

您缺少代码中的第一个参数,因此,当您使用$args时,会得到Response对象。