フレームワークのアクセサ


ユーザがアクセスするファイルをひとつ(index.phpとか)にすることを想定しているフレームワークは多い。



ただ、個人的には、ブックマークされうることを考えると、1ユースケースにひとつのアクセサが有るほうが良いのではないだろうかと思う。さらに、ユースケースの途中の画面をブックマークしても、ブックマークからのアクセスだとユースケースの入り口に行くようにしたい。つまり、GETパラメータも含めて1ユースケース1URLであるようにしたい。

FrontControllerパターンにのっとっているPHPフレームワークは入り口を1つにするという利点を生かすためにアクセスするファイルを1つにすることを普通推奨する。ただし、これはあくまでも入り口をたくさんつくるの面倒でしょ?という程度でわけてもかまわないようになっているはず。入り口のPHPは基本的にControllerを初期化して、起動させる程度のことしかしないから。

MojaviでもMapleでもEthnaでも入り口を1つではなくて、複数にしても一向にかまわないようになっている(はず)。ただし、複数の入り口PHPを準備するとActionがどれからでも呼べてしまうようになるかもしれない。Ethnaはこの部分は制限がかけれるようになっていたはず。つまり、この入り口PHPからはこのActionしか呼べないという制御ができたはず。(「・・・はず」ばっかりですみません。詳しい方フォローお願いします)

追記 Ethnaでの制限のやり方はここで説明されてますね。 ⇒ エントリポイント毎に実行可能なアクションを制限する

Mapleは3.0.0ではこの制限ができないが、3.0.1では実装するつもりです。考えているものは以下の二つ。

  • Controllerに対してActionリストを渡して初期化することによりその入り口PHPから特定のActionしか起動できなくする(Ethnaと同じ方式のはず)。起動できるActionを1つに絞ればそのControllerはPageControllerとなる。
  • 設定されたURL以外からの呼び出しだとエラーとするようなFilterを準備。これによりこのFilterをセットしたActionは特定のURL(入り口PHPからしか呼び出せなくなる。

上記のものにより、harukiさんのご希望の半分はかなえられるかな。のこりの「ユースケースの途中だと入り口に戻りたい」というのはちょっと実装を考えないといかんですね。リファラーなんてあてにならないものもつかえないので、Token引継ぎで、Tokenが不正だったら入り口に強制遷移とかかな。