猫でもわかるWebプログラミング

試行錯誤しながらエンジニア(プログラマー)として働く猫のブログ。技術的な話や、働き方の話、読書録とか、試行錯誤している日常の話。

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とかを指定する場合に使ったり
  • ログを出すのに使ったり