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つだけにしておけば、インスタンスの生成すらフレームワーク側で行いません。
メソッド名がいまいちだけど気にしない方向で。