FuelPHPはコントローラをサブディレクトリに配置してそれに対応したURLで呼び出すことができる。
controller/hoge/foo.php
class Controller_Hoge_Foo extends Controller
{
public function action_index() {
echo "Controller_Hoge_Fooのaction_indexが呼び出されました";
exit;
}
public function action_bar() {
echo "Controller_Hoge_Fooのaction_barが呼び出されました";
exit;
}
}
上のコントローラの action_index に対応するURLは
http://example.com/hoge/foo
action_bar に対応するURLは
http://example.com/hoge/foo/bar
となる。
この状態で、上位ディレクトリに Controller_Hoge が存在し、action_foo が定義されていた場合に、
controller/hoge.php
class Controller_Hoge extends Controller
{
public function action_index() {
echo "Controller_Hogeのaction_indexが呼び出されました";
exit;
}
public function action_foo() {
echo "Controller_Hogeのaction_fooが呼び出されました";
exit;
}
}
Controller_Hoge_Foo.action_index と Controller_Hoge.action_foo のどちらが呼び出されるのかやってみた。
結果
Controller_Hogeのaction_indexが呼び出されました
Controller_Hoge_Fooのaction_indexが呼び出されました
Controller_Hoge_Fooのaction_barが呼び出されました
サブディレクトリが優先して呼び出されるらしく、Controller_Hoge.action_foo は呼び出されなかった。