読者です 読者をやめる 読者になる 読者になる

ありがとう。また会おう。

まぁゆるりとやっていきますよと。

コントローラを多層化する

http://d.hatena.ne.jp/noopable/20090205/1233792325
のコメント欄を見て知った。
Zend Frameworkは、コントローラの多層化できるんだ。
もっと早く知っていれば…

具体的な方法。
コントローラは

controllers/Foo/Bar/BazController.php

というパスで、クラス名は「Foo_Bar_BazController」とする。

ビューも同じようにファイルパスは

views/scripts/foo/bar/baz/index.phtml

で、アクセスするURLは

http://example.com/foo_bar_baz/index

となる。

ちなみに、モジュール構造を採用している場合は
クラス名は「<モジュール名>_Foo_Bar_BazController」
ビューのファイルパスは

views/scripts/<モジュール名>/foo/bar/baz/index.phtml

で、URLは

http://example.com/<モジュール名>/foo_bar_baz/index

となる。

ちなみに、コントローラ名が複数語で構成されている場合
例えば「Foo_Bar_MyHogeFugaController」とすると
アクセスURLは

http://example.com/<モジュール名>/foo_bar_my-hoge-fuga/index

となる。
多層化のパスの区切りがアンダーバー。
単語の区切りがハイフン。
…という、ちょっとわかりにくいルール…
まぁこのあたりは、Zend Frameworkのデフォルトルーティング使わず
ちゃんとマッピングルールを作った方がいいでしょうね。