Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

この記事について

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

nunulk
PHP, Laravel, オブジェクト指向プログラミング, デザインパターン, リファクタリング, 関数プログラミング, etc.
http://nunulk.hatenablog.com
phper-oop
ペチオブはオブジェクト指向ワーキンググループです。様々なエンジニアの方に参加頂いております。
https://phper-oop.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away