CakePHP自作Helperのトラブルシューティング(命名規則について)
CakePHPで徐々に省力できるポイントがわかってきました。tanakaです。最近、他のビューでも使いそうだな、と思った機能をヘルパーに切り出そうとしました。そのときヘルパーの命名規則・呼び出し方で、少しハマったので、メモしておきます。ヘルパーを作るときは以下の4点にご注意ください。
ファイル名はすべて小文字でアンダーバーでつなげる
ヘルパーのスクリプトはapp/views/helpers/に配置します。そのときのファイル名は以下のようにします。
my_pretty_feature.php
これはモデルのファイル名と同じですね。
クラス名は単語の頭文字が大文字。そして最後に"Helper"を付ける
my_pretty_feature.phpに定義するクラス名は下のようになります。
<?php
class MyPrettyFeatureHelper extends Helper
{
// 省略
}
?>
コントローラーに登録するときは単語の頭文字が大文字にする
コントローラーのメンバに以下のように登録します。
$helpers = array("Html", "MyPrettyFeature");
HTMLヘルパーは、明示的に登録しなくても使えますが、その他のヘルパーを使うときは明示的な登録が必要なので注意。(HTMLヘルパーを全く使わない時以外)
ビューで呼び出すときは2単語目以降の頭文字は大文字にする
ここで僕は間違えていていました。先輩プログラマーと話してみて、どうも呼び出し方が違うらしいとわかりました。なぜすぐに解決できなかったかというと、エラーメッセージが、「スクリプトファイルにクラスが定義されていない」といったものだったからです。さて、正しくは以下のように呼び出します。
<?php echo $myPrettyFeature->hoge();?>
もし、これからヘルパーをつくるようなときは参考にしてください。