Edited at

私家版 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 が爆速ですね)。

https://github.com/kenjis/php-framework-benchmark


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

インストールが終わると、以下のようなファイル群が出来上がります(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/ を開いてください。

image.png

開けましたでしょうか。

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

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