ことさら−古都プログラマーの更級日記

京都でお寺を回りながら御朱印集めをしていたり、LoLをしたり試合を見に行ったりしているエンジニアのブログです。技術的なはなしとか日常的なはなし、カメラやLoLや競馬の話も書きます。右メニューに検索やらカテゴリーやらがあるので、見たい記事だけ見てね!

PHP Slim FrameworkのMiddleware

もくじ

Middlewareとは

beforeとafterを指定できる

Middlewareの実装方法

functionで実装するかClassで実装するかがあるけどクラスで実装したほうがいいだろう

<?php

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

class ExampleMiddleware
{
    public function __invoke(Request $request, Response $response, $next)
    {
        beforeにやる処理
        $response = $next($request, $response);
        afterにやる処理
        return $response;
    }
}

Middlewareの利用方法

全体で使う

$app = new \Slim\App();
$app->add(new ExampleMiddleware());

特定のルートでだけ使う

$app = new \Slim\App();
$app->get('/', ...)->add(new ExampleMiddleware);

グループに定義

$app->group('/utils', function() use ($app) {
  $app->get('/date', ...);
})->add(new ExampleMiddleware());

この場合 GET /utils/date にだけ適応される

どういうときに使うか

  • ログインをしないと叩けないAPI、ユーザー情報がないと叩けないAPIとかを指定する場合に使ったり
  • ログを出すのに使ったり