CakePHP自作Helperのトラブルシューティング(命名規則について)

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();?>

もし、これからヘルパーをつくるようなときは参考にしてください。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ