メソッドの呼びわけ

昨日のエントリを書いた後色々考えていて、「Filterという機能自体がActionフィルタという1フィルタに依存して書式を決めるのはやっぱまずいよな」と考え直してました(案の定、Hawkさんからツッコミいただきました)。Actionフィルタの動作はMapleの規約に見えますが、実際はただのフィルタにすぎず、差し替え可能なものなので、そのメソッドを呼び分ける書式をFilterのセクション名にまぜるのはまずいなと。

Hawkさんのツッコミ(コチラを参照)にあるように、実行されるクラスおよびメソッドが決定されれば、実行されるFilterはおのずと決定される(動き出したら発動する/しないなどというぶれはない)というシンプルな仕組みの方が混乱がなくていいですね。なので、議論されるべきはFilterの発動条件ではなく、実行されるクラスおよびメソッドの決定ロジック側ということになるだろうと。(Hawkさんの以前のエントリの方は私が理解できてませんでしたね。同じことを2度説明させてしまってすみません)

kumatchさんのアイディアくぼさんからのディレクトリ構成案updoorさんのコメントといったものをさらに加味すると以下のような感じになるのがいいのかなぁ。

  • Actionのディレクトリ・ファイル命名規則PEAR準拠にする(foo_bar_baz => foo/bar/baz/Baz.class.php から Foo/Bar/Baz.php に)
  • 設定ファイルはmaple.ini(正確に言うと CONFIG_FILE の値)という固定ではなくて、(Actionのファイル名).ini とする(foo_bar_baz => Foo/Bar/Baz.ini)
  • 上位のディレクトリの設定ファイル(foo_bar_baz の場合は Foo.ini と Bar.ini )を継承する(動作としては今までどおりで、見に行くファイル名を変更)

ま、actionのメソッド呼びわけを導入してこれ以上規約を複雑にしても仕方ない感じがしてきましたね。実際、ご要望として上がってきたこともない(実際私がRailsをみて1クラス複数メソッドでもいいかなと欲をだしただけ・・・)ので、今の「1クラス1アクション」という規約で不都合があるというよりも、複雑になるほうが困るって方の方が多そうですね。

POST/GETでの発動切り分けをするにしても、Hawkさんの提案のとおり、Baz_post.ini としてファイルを分けたほうがわかりやすいっすね。というわけで、この議論も maple.ini の継承パターンの整理ってことに移るかな?

次回コミッター会議が3/4。議論の種がたまってきましたね。