karintoの実装がクラスベースになった

従来karintoを利用するためにはリクエストメソッドとPATH_INFOをベースにした名前の関数を作る必要があったが、共通処理を継承とか使ってやりたいよね、そもそも同じURLを扱うのは同じスコープにあるべきたよね、ということでクラスを作るように変更しました。

今までだと次のように書いてた実装コードが、

<?php
function get_foo($req, $res)
{
    $res->message = 'Hello, ' . $req->name;
    $res->render(); // /tpl/get_foo.phpを描画
}
function post_foo($req, $res)
{
    $res->redirect('/bar');
}

次のように書くように変更になります。

<?php
// /pages/foo.php
class foo
{
    public function do_get($req, $res)
    {
        $res->message = 'Hello, ' . $req->name;
        $res->render(); // /templates/foo.phpを描画
    }
    public function do_post($req, $res)
    {
        $res->redirect('/bar');
    }
}

それぞれのメソッドの引数は2つまたは3つ。

2つの場合はkarinto_requestとkarinto_responseのインスタンスが、3つの場合はkarinto_requestとkarinto_response、karinto_sessionのインスタンスがそれぞれ渡されます。

karinto_sessionはCookieStoreな疑似セッションを扱うためのクラス。セッションデータをサーバー側で持たないのでレンタルサーバーに優しい感じですが、使わない場合はメソッドの引数を2つだけにしておけば、インスタンスの生成すらフレームワーク側で行いません。

メソッド名がいまいちだけど気にしない方向で。