アクションクラスのイメージ

Moony次期バージョンのアクションクラスについて考えていること:

  • 特定のクラスのサブクラスである必要はない
  • リクエストパラメータはプロパティとして格納される
  • 必要最低限のクラスのインスタンスが各メソッドの引数として提供される
  • セッション管理クラスのインスタンスもプロパティとして格納される
class Foo extends Moony_Action
{
    var $name;
    var $furigana;
    var $session;

    /**
     * @param object $f Moony_Filter
     */
    function filter($f)
    {
        $f->toHiragana($this->furigana);
    }

    /**
     * @param object $v Moony_Validator
     */
    function validate($v)
    {
        $v->setRequired($this->name, '名前は必ず入力してください');
        $v->setHiragana($this->furigana, 'ふりがなはひらがなで入力してください');
    }

    /**
     * @param object $t Moony_Template
     */
    function execute($t)
    {
        $this->session->set('name', $this->name);

        $t->assign('name', $this->name);
        $t->assign('furigana', $this->furigana);
        $t->display();
    }
}