Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

cakephp の Helper と element の使い分けってどうするんだろう

たまーに書く cakephp 関連の話.

cakephp の Helper と element の使い分けってどうすればいいのかあんまり自分の中で整理できてないな.

HtmlHelper みたいなピンポイント的な関数要素を Helper で書いて,表示系を element って感じで記述分けしてるけど,それでもなんかしっくりこないことがあるんだよね.

設定変数を見て表示を変える記述を element 中にごちゃごちゃと書いてると,ほとんどブログラムばかりになってしまって,なんかもう element って感じじゃなくて,関数みたいだなぁと思ったり.

ためしにぜーんぶ Helper にしてみたりもしたけど,それはそれで Helper 関数の中で文字列の細工ばかりを行う感じになるものもあってなんだか違うなぁと.あとは,view に渡した引数をグローバルで使えるわけではないので,Helper 中で変数を引数として色々と渡さないとダメになるので余計記述が煩雑になるしね.

関数っぽいものを Helper にして,表示に特化したようなものを element に分けて見たけど,相互に呼び出したいみたいなところも出てきて,やっぱりそれも違うのかなぁと.

で,結局,前述のようにピンポイント的な要素だけを出力するものを Helper で書いて,それ以外を element って感じでとりあえずは落ち着いています.

皆さんはどうしているのかなぁ.

https://book.cakephp.org/3.0/ja/views/helpers.html を見ても makeEdit って関数をサンプルで

class LinkHelper extends Helper
{
    public $helpers = ['Html'];

    public function makeEdit($title, $url)
    {
        $link = $this->Html->link($title, $url, ['class' => 'edit']);
        return '<div class="editOuter">' . $link . '</div>';
    }
}

な感じで作ってますが,これって element で作ったほうがスッキルするんじゃないかなと思うしね.まぁ,element 中でエラー処理とかごちゃごちゃと書く羽目にはなってしまうけど,まぁ,そのあたりは Helper で書いても同じだし.

で,結局 element がどんどん増殖して Helper ってあんまり使わない感じになっちゃうんだけどそれでいいのかな.