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

Hello Slim!

More than 5 years have passed since last update.

SlimはPHPで作られた比較的新しいフレームワークです。「マイクロフレームワーク」のひとつで、SynfonyやCakePHPなどのフルスタックのものとは異なり、非常にシンプルな構成になっています。機能も、フロントコントローラにフォーカスしているので、モデルやDBへのアクセスといった部分はごっそり省略されています。まさに「Slim」です。

Let's start!

何はともあれ、まずはサンプルを作成してみましょう。

GitHubのmasterブランチからSlimをダウンロードして、ZIPファイルを解凍します。ここでは、

  • .htaccess
  • js/
  • css/
  • php/
    • index.php
    • Slim/

みたいな感じで、ファイルを配置します。(配置の仕方に特に決まりはないので、各人の好みで変えてしまってOKです)

.htaccessで、ファイルが存在しない場合にすべてをphp/index.phpに渡すよう設定しています。※Webサーバの設定によっては、RewriteBaseの行をコメントアウトする必要があります。

RewriteEngine On
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ php/index.php [QSA,L]

それでは、下準備が完了したので、お決まりの「Hello World」をやってみましょう。php/index.phpに次のように書きます。

php/index.php
<?php
require 'Slim/Slim.php'; //ライブラリの読み込み
$app = new Slim(); //インスタンスを初期化
$app->get('/hello/:world', function ($world) { //ルーティング設定
    echo "Hello $world! (GET version)";
});
$app->run(); //実行

ブラウザから、http://<ホスト名>/hello/slim にアクセスしてみましょう。画面に

Hello slim! (GET version)

と表示されていたらOKです。

Slimでルーティング

Slimでは、

$app->get('/path/to/:variable', some_function);

の形式でルーティングの設定が可能です。":variable"の部分は、関数に変数として渡されます。それぞれのメソッドに合わせて関数が用意されています。

  • GETメソッド : $app->get()
  • POSTメソッド : $app->post()
  • PUTメソッド : $app->put()
  • DELETEメソッド : $app->delete()

また、SlimはPHP5.3以降で無名関数を使って書くと非常に読みやすいコードになります。

$app->get('/path/to/:variable', function ($variable) {
    //ここに処理を書く
});

無名関数の内部で、Slimのインスタンス($app)にアクセスする必要がある場合は、次のように書く事もできます。

$app->get('/path/to/:variable', function ($variable) use ($app) {
    $name = $app->request()->params('name'); //リクエスト変数を取得
    //ここに処理を書く
});

(つづく)

この記事は、4/18(水)に開催された「軽量WEBフレームワーク祭り」の発表内容を整理したものです。

cognitom
下北沢オープンソースCafeのマスターで、図書館サービス「リブライズ」のデザイン担当。Riot.jsのコア開発者。
https://github.com/cognitom
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