私家版 Slim Framework チュートリアル (1) 〜 特徴と準備編


この記事について

PHP のマイクロフレームワークのひとつである、Slim Framework ですが、チュートリアルがいまいちイケてないので、お題を流用しつつ、初学者にももう少し分かりやすくなるよう、アレンジしてみようという試みです。

長くなりそうなので、何回かに分けます。

概要

今回は Slim の特徴の紹介とインストールしてから動作させるまでをやります。

環境

  • Slim: 3.9.2
  • PHP: 7.1.12

PHP のバージョンは 5.5 以上が必要となっていますが、本記事では 7.1 でいかせていただきます。

公式サイト
Slim Framework - Slim Framework

本家チュートリアルはこちらです。
First Application Walkthrough - Slim Framework

このチュートリアルでは、バグトラッキングシステムを想定して、チケット(不具合報告票)に対する CRUD 処理(作成、表示、更新、削除)を実装していきます。

1. Slim の特徴

Slim は "マイクロフレームワーク" と呼ばれる、必要最低限の機能のみを提供し、その分速度が出るようにデザインされた軽量なフレームワークで、Symfony や Laravel のような、機能全部乗せで巨大な、いわゆるフルスタックフレームワークとは、導入の目的や用途も異なる場合が多いです。

つくろうとするアプリケーションがそれほど複雑でなく、同時アクセス数が比較的多く見込まれる場合には、マイクロフレームワークが適しているケースが多いです。

1.1. 速度

下記のベンチマークの比較を見ると、上から9番目(22個中)で、速度的には中くらい、といったところでしょうか(関係ないけど、1位の Siler が爆速ですね)。

1.1. PSR への準拠

PSR とは、"PHP Standards Recommendations" の略で、PHP でウェブアプリケーションをつくる際の標準的な枠組みを決め、それを文書化、普及させていこうという活動と成果物です。

PHP Standards Recommendations - PHP-FIG

これまで、コーディングスタイルとかオートロードの仕組みやロガーインタフェースなどを定めてきていて、様々なライブラリが、これらの標準に合わせようとしています(Slim Framework もそのひとつです)。

Slim では、以下の仕組みを、PSR 準拠で実装しています。

仕組み PSR 実装
コンテナ PSR-11 Pimple
ログ PSR-3 Monolog
HTTPリクエストおよびレスポンス PSR-7 Slim

Pimple と Monolog は外部パッケージです。詳しい説明は省きますが、興味のある方は調べてみてください。

Pimple

Pimple - A simple PHP Dependency Injection Container

Monolog

GitHub - Seldaek/monolog: Sends your logs to files, sockets, inboxes, databases and various web services

1.3. 分離されたテンプレートエンジン

PHP-View というテンプレートエンジンが公式から提供されています。

API サーバーの場合は、クライアントに JSON データを返すことになるため、テンプレートエンジンは不要になるはずですので、Slim 本体とは別パッケージで提供されています。

ウェブページを返すアプリケーションをつくる場合はこちらのパッケージが必要です(今回のチュートリアルでは初めから入っているため、追加の必要はありません)。

GitHub - slimphp/PHP-View: A Simple PHP Renderer for Slim 3 (or any other PSR-7 project)

Twig などの他のテンプレートエンジンも使えるようですが、私は試してないので割愛します。

2. インストール

前置きはこのくらいにして、インストールから動作確認までを一気にやってしまいましょう。

composer が必要です。インストールされていなければ、公式サイトの記述を参考にインストールしてください。

Introduction - Composer

アプリケーションを作成したいディレクトリにて、下記のコマンドを実行します。

$ composer create-project slim/slim-skeleton Tutorial-First-Application

@ohara5555 さんからのコメントにもありますが、現在は v4 が最新になっており、上記のコマンドだと 4 系がインストールされてしまうので、下記のようにバージョン指定してインストールしてください。

composer create-project slim/slim-skeleton:3.* Tutorial-First-Application

インストールが終わると、以下のようなファイル群が出来上がります(vendor 以下にインストールされる依存パッケージも多くないのでぜんぶ載せます)。

$ tree -L 2 .
.
├── CONTRIBUTING.md
├── README.md
├── composer.json
├── composer.lock
├── docker-compose.yml
├── logs
│   └── README.md
├── phpunit.xml
├── public
│   └── index.php
├── src
│   ├── dependencies.php
│   ├── middleware.php
│   ├── routes.php
│   └── settings.php
├── templates
│   └── index.phtml
├── tests                                               
│   └── Functional
└── vendor
    ├── autoload.php
    ├── bin
    ├── composer
    ├── container-interop
    ├── doctrine
    ├── monolog
    ├── myclabs
    ├── nikic
    ├── phpdocumentor
    ├── phpspec
    ├── phpunit
    ├── pimple
    ├── psr
    ├── sebastian
    ├── slim
    ├── symfony
    └── webmozart

では、アプリケーションを動かしてみましょう。
ターミナルから以下のコマンドを実行してください。

$ php -S localhost:8080 -t public

または、

$ composer start

でもOKです。

composer.json で以下のようにコマンドが指定してあり、それを呼び出しているだけなので、上のコマンドと下のコマンドは同じもの(index.php は省略可)になります。

composer.json
{
    ~略~

    "scripts": {
        "start": "php -S localhost:8080 -t public index.php",
        "test": "phpunit"
    }

}

ブラウザにて http://localhost:8080/ を開いてください。

開けましたでしょうか。

次回から、チケット管理アプリケーションの実装をしていきます。

私家版 Slim Framework チュートリアル (2) 〜 ルーティングと新規作成編 - Qiita