9.

Slim

編集

SlimはPHP向けのマイクロフレームワークです。REST API / 小規模Webサービスを最小限の設定で構築するのに向いており、Laravel や Symfony と比べてかなり軽量です。

Slimの特徴

  • マイクロフレームワーク — ルーティング・ミドルウェア・依存注入の最小セット
  • PSR準拠 — PSR-7(HTTPメッセージ)/PSR-15(ミドルウェア)/PSR-11(DI)に対応
  • 軽量・高速 — リクエスト処理のオーバーヘッドが小さい
  • API向け — JSONを返すREST APIの記述が直感的
  • composer導入 — 数行のコードで起動

導入の最小例

$ mkdir my-api && cd my-api
$ composer require slim/slim:"^4"
$ composer require slim/psr7

最小のHello World

// public/index.php
require __DIR__ . '/../vendor/autoload.php';

use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;

$app = AppFactory::create();

$app->get('/hello/{name}', function (Request $req, Response $res, array $args) {
    $res->getBody()->write("Hello, " . $args['name']);
    return $res;
});

$app->run();

起動方法

$ php -S localhost:8080 -t public
# ブラウザで http://localhost:8080/hello/world にアクセス

主な機能

機能説明
ルーティングHTTPメソッド + URLパターンでハンドラ登録
ミドルウェア認証・ロギング・CORS等をリクエスト前後に挟む
DI ContainerPSR-11対応のコンテナでサービス注入
レスポンス組み立てPSR-7のResponseオブジェクト
エラーハンドリング例外をJSONエラーレスポンス等に変換

JSONレスポンスの返し方

$app->get('/users', function (Request $req, Response $res) {
    $data = [['id' => 1, 'name' => 'Taro']];
    $res->getBody()->write(json_encode($data));
    return $res->withHeader('Content-Type', 'application/json');
});

他のPHPフレームワークとの比較

フレームワーク向く用途
SlimREST API、マイクロサービス、軽量Webアプリ
Laravel大規模Webアプリ、フルスタック
Symfony大規模・堅牢、コンポーネント志向
CodeIgniter小〜中規模、学習用

注意点

  • 機能は最小限。ORM、認証、メール等は別途composerで追加(例:Eloquent、Doctrine、Twig等)
  • Slim 3 と Slim 4 で API が変わっている。古い記事のサンプルは要注意
  • 大規模化したらLaravel等への移行も検討

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. Laravel
  2. CakePHP
  3. Symfony
  4. zend framework
  5. DietCake
  6. phalcon
  7. CodeIgniter
  8. FuelPHP
  9. Slim
  10. Flight
  11. Yii
  12. Silex