Ethnaコマンドでadd-actionするときはファイル名の大文字小文字に注意!

Ethna(2.5)でアクションファイルを作るときのファイル名の大文字小文字について、 はまってしまったので調べてみた。

この辺をちゃんと理解していなかったのは私だけではないはずだ。

結論を先に言うと、下記の2つは挙動が異なる。
そして前者を使うべきである。
ethna add-action foo_bar
ethna add-action Foo_Bar

理由

ethnaコマンドでadd-actionをしてみればわかる。

$ ./ethna add-action Foo_Bar

file generated [/home/userdqn/project/skel/skel.action.php -> /home/userdqn/project/app/action/Foo/Bar.php]
action script(s) successfully created [/home/userdqn/project/app/action/Foo/Bar.php]

$ ./ethna add-action bar_buz

file generated [/home/userdqn/project/skel/skel.action.php -> /home/userdqn/project/app/action/Bar/Buz.php]
action script(s) successfully created [/home/userdqn/project/app/action/Bar/Buz.php]
一見、どちらもAaa/Bbb.php形式のファイル名が作られるので同じ挙動のように見えるのだが、実は大きな落とし穴がある。
生成されたアクションクラスファイルのperformメソッドを見てみよう。
add-action Foo_Barした場合
function perform()
{
    return 'Foo_Bar';
}
add-action bar_buzした場合
function perform()
{
    return 'bar_buz';
}
returnの文字列形式が異なっていることがわかる。

一方、add-view -t とadd-templateの挙動を確認してみよう。 

add-view -t Foo_Bar または add-template Foo_Bar とすると、
Foo/Bar.tpl
というファイルが生成される。

add-view -t foo_bar または add-template foo_bar とすると、
foo/bar.tpl
というファイルが生成される。
したがって、下記のようなことをすると正しく遷移できない。
//間違ったやり方 その1
ethna add-action Foo_Bar
した後で
ethna add-view -t foo_bar もしくは ethna add-template foo_bar
//間違ったやり方 その2
ethna add-action foo_bar
した後で
ethna add-view -t Foo_Bar もしくは ethna add-template Foo_Bar
結局、正しく遷移させようとするとfoo_barかFoo_Barかどちらかに統一しないといけない。
//正しいやり方 その1
ethna add-action Foo_Bar
ethna add-view -t Foo_Bar もしくは ethna add-template Foo_Bar

//正しいやり方 その2
ethna add-action foo_bar
ethna add-view -t foo_bar もしくは ethna add-template foo_bar

公式サイトを見る限りでは、"add-action foo_bar"が標準のようである。

まとめ

まとめると、下記のようなファイル名になるのがEthnaの公式仕様と思われる

app/action/Foo/Bar.php
app/view/Foo/Bar.php
template/ja_JP/foo/bar.tpl
あーすっきりした。
カテゴリ: