Ethna: 2010年5月アーカイブ

このようなことはやらない方がよい。
ethna add-action FooBar
ethna add-action fooBar
こうする代わりに、下記のようにすべきである。
ethna add-action foobar

理由

ethna add-action FooBar
↓生成する
app/action/FooBar.php
一方、
ethna add-action foo_bar
↓生成する
app/action/Foo/Bar.php
となる。

一見問題なさそうなのだが、実は両者のクラス名が同じなのである。
どちらも、下記のようなクラスを生成する。
class Project_Form_FooBar
class Project_Action_FooBar
同一プロジェクト内で同じクラス名が2つ存在するのが良くないのは言うまでもない。
また、プロジェクト内でクラス名とファイルパスのマッピングルールが統一されてないと、混乱のもとになる。
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
あーすっきりした。

このアーカイブについて

このページには、2010年5月以降に書かれたブログ記事のうちEthnaカテゴリに属しているものが含まれています。

前のアーカイブはEthna: 2009年9月です。

Ethna: 2010年5月: 月別アーカイブ