在中间件SlimV3中添加值

时间:2016-07-22 13:48:30

标签: php slim middleware psr-7

我是SLimV3中的新手,我想使用middleWare创建Json输出。

我的代码是: 控制器:

public function __invoke(Request $request, Response $response, $args) {
....
    $out['message'] = "ok";
    $out['code'] = 0;
    $response->withJson($out);
  }

我的路线:

  $app->get('/foo', App\Action\Foo::class)->add(new foo\Middleware());

我的中间件

class Middleware{

  public function __invoke(RequestInterface $request, ResponseInterface $response,$next) {
    $started = microtime(true);
    $response = $response->withHeader('Content-type', 'application/json');
    $response = $next($request, $response);
    $json = json_decode( (string) $response->getBody(),true);
    $json['execution_time'] = microtime(true) - $started;
    $newResponse = $response->withJson($json);
    return $newResponse;
  }
}

我的输出正常,

{
  "message": "ok",
  "code": 0,
  "execution_time": 0.44862484931946
}   

但我不喜欢在我的控制器中创建Json,在中间件中创建Json Decode,再次$newResponse = $response->withJson($json);。我想阅读Response并在中间件中创建响应,或者读取状态代码并创建自定义响应。 我能做到吗?

0 个答案:

没有答案