codeigniterで、複数のコントローラーで共通するメソッド群があったんですが、それを書くべきところのルール(作法)がよくわからなくなってきたのでアドバイスがほしいです。
具体的には、ある値を受けたらそれを表に従い変換した値を返すようなメソッドが何種類かあって、それらを複数回書かないために、一箇所に書くところをまとめてしまいたいのですが、親クラスにするべきかライブラリにするべきかヘルパーにするべきかわからなくなりました。
例えば、共通メソッド部分のところをまとめるだけに親クラスを作ったとしたら、それはクラス間の親子関係がおかしいように感じます。
またライブラリなら他の環境へ再利用性が全く無いので、ここに置いていいのか感があります。
そしてヘルパーは、汎用性が高い色んな所で使うようなものならそれっぽいのですが、そんなに呼び出さないので違うのかなと思いました。
あと、コントローラーのフォルダにfunctions.phpみたいなものとか作ってそれを読み込むような方法も考えましたが、標準的な方法じゃないだろうなとも思ってます。
今回のケースだとどこに書くべきか、また、上記の書くところの使い分けの考え方みたいなコツがあれば、ご教授いただけたらありがたいです。
追記
maverixzさんに具体的じゃないと指摘されたのでコードを書いてみます。
例で上げたのはこんな感じのコードです。
メソッドの関心事ってのは、自由記述のフォームから入力されたごちゃごちゃした入力をある程度までまとめるってことでしょうか。
php
1//部署に当たる単語を検出してコードを返す 2function convert_division_code($division){ 3 switch($division){ 4 case '営業': 5 case '営業1課': 6 return 'eigyo-A'; 7 case '営業2課': 8 case '営業3課': 9 return 'eigyo-B'; 10 case '総務': 11 case '総務部': 12 return 'soumu'; 13 default: 14 return false; 15 } 16} 17 18//事務所の場所の名前を検出してコードを返す 19function convert_branch_code($branch){ 20//続く 21
指摘内容の「複数のコントローラーが汎化できるか」ってのがちょっとわかりません。共通部分を汎化しないほうが良いパターンってあるのでしょうか?
同じ内容を2回も3回も書くというのは、1つ変更があるときに全箇所見落としなしで修正するという作業が必要になり、ミスが起こりやすくなると思いますが違うのでしょうか?
あと、今回のコードは○○だからどうするべきだというピンポイントの回答よりも、できれば、どう考えるべきかという判断基準を示していただいた回答の方がより嬉しいです。

回答2件
あなたの回答
tips
プレビュー