WebエンジニアのLoL日記

LoLをプレイしたりLJLの試合を見たりするのが好きなエンジニア。LoLのイベントやパッチノートなど気になった点を記事にしたり、LJLについの記事をかいたりしています。某社でWeb系のエンジニアとして働いているので、技術系の記事もたまに書きます。コンタクトを取りたい場合はtwitterまで。

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