Sinatra風PHP用フレームワークLimonadeによるWebアプリケーション作成

Sinatra 風の PHP 用 Web フレームワーク Limonade を使って簡単な Web アプリケーションを作成してみた。
他にも同様のフレームワークとして Fitzgerald があるが、今回は実装コード量が少なくなりそうな Limonade を使ってみることにした。

使用した環境は以下の通り。今回は XAMPP 上で PHP を動作させた。(PHP が動作する環境であれば他でも可)

  • XAMPP Lite 1.7.3
  • Limonade 0.4.6

サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20100903/

事前準備

まず、XAMPP 環境を用意し、htdocs ディレクトリ内に任意のディレクトリ(今回は sample)を作成しておく。

Limonade の Github からソースコードを取得し、以下を実施。

  • lib ディレクトリを htdocs/sample ディレクトリに配置
  • examples/urlrewrite/htaccess.conf(Apache用のURLリライト設定)を htdocs/sample ディレクトリに .htaccess として配置

上記作業で XAMPP の htdocs 内の構成は以下のようになる。

  • htdocs ディレクトリ
    • sample ディレクトリ
      • .htaccess ファイル
      • lib ディレクトリ

なお、PHP を実行させる環境によっては自前で URL リライトの設定を行う必要がある点に注意。

Webアプリケーション開発

htdocs/samle に index.php を作成し、URLと処理のマッピングを実装する。

Limonade のサンプルでは、関数定義とURLのマッピングが分けて記載されているが(dispatch には関数名を文字列として渡している)、PHP 5.3 ではラムダ関数を使って、より Sinatra に近い記述ができるので、今回はラムダ関数を使って実装してみた。

run メソッドを最後に呼び出す点に注意。

htdocs/sample/index.php
<?php
require_once dirname(__FILE__) . '/lib/limonade.php';

//ルート / へのアクセス時の処理
dispatch('/', function() {
    return "hello";
});

// /name/value へのアクセス時の処理
dispatch('/:name/:value', function() {
    $name = params("name");
    $value = params("value");

    return "sample page name: $name, value: $value";
});

run();
?>

動作確認

XAMPP が起動している状態で、http://localhost/sample/http://localhost/sample/aaa/100(aaa や 100 の部分は何でもよい)にアクセスすると、正常に動作していることが確認できる。