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 ディレクトリ
- sample ディレクトリ
なお、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 の部分は何でもよい)にアクセスすると、正常に動作していることが確認できる。