マルっとサクッとパラメータを受け取る

最近PHP+slimでAPIをたくさん作ってますがAPIの実装が面倒になってきた
たとえばアクセストークンを使って認証的なことをやろうとした場合、IF仕様はこうなる

アクセストークンは、リクエストヘッダー、または、GETの場合はクエリーパラメータ、または、POSTの場合はbodyに入れること

いろんなところから取得しなきゃでめんどくせーー

欲しいのはパラメータ

で、欲しいのはそのパラメータであって、それがヘッダーだろうとなんだろうと別にどうでもいい
なのでパラメータの取得方法を考えなくてもよくするミドルウェアを作った

$app->add(function ($request, $response, $next) {
  $params = [];
  forEach($request->getHeaders() as $key => $value) {
    $params[$key] = $value;
  }
  if($request->getQueryParams() != null) {
    forEach($request->getQueryParams() as $key => $value) {
      $params[$key] = $value;
    }
  }
  if($request->getParsedBody() != null) {
    forEach($request->getParsedBody() as $key => $value) {
      $params[$key] = $value;
    }
  }
  
  $request = $request->withAttribute('params', $params);
  return $next($request, $response);
});

取得するときはこんな感じ

$params = $request->getAttribute('params');

APIの実装が楽になった
めでたし、めでたし