がると申します。
全体の仕様やビジネスが見え切れていないので言及しにくい部分も色々とあるのですが。
「CSV全体のクラス」については、SplFileObjectが、PHP的には標準でもあり、使いやすいのではないか、と思います。
書式としては
PHP
1$f_obj = new \SplFileObject(ファイル名);
2$f_obj->setFlags(\SplFileObject::READ_CSV);
3foreach ($f_obj as $key => $row) {
4 // $keyに行番号、$rowに1行分のデータ
5}
6
といった感じです。
あとはこのCSVをどのように使うか、によっても色々と変わるかなぁ、と思うのですが。
自分であれば、見ている範囲であれば
・「項目が増えたり廃止されたり」は、configあたりで「nカラム目はこのデータ」とかいった対応表を作る(例えば「0カラム目はitem_id」「1カラム目はitem_name」とか)
・上述の「$row」のデータを「1行分のデータを扱うクラス」に食わせて、1インスタンスを取得する
PHP
1$item_obj = new item($row);
・validateなどは「1行分のデータを扱うクラス」の中で実装する
→簡単な「必須」とか「文字であること/数値であること」「文字長のmix-min」などは簡単にかけるようにしておくと楽
→もうちょっと入り組んだもの(書式チェックとか)は「1項目ごと」に書いちゃうほうが楽
自分なら、validate関連は、itemクラスの中で
PHP
1public function validate()
2{
3 // 呼び出したい「個々のvalidate」のメソッド名の配列
4 $validate_methods['validate_hoge', 'validate_foo', 'validate_bar'];
5 // 個々に呼び出し
6 $err = [];
7 foreach($validate_methods as $vm) {
8 $err = $this->$vm($err);
9 }
10 //
11 if ([] !== $err) {
12 // なにかエラーがあったぽい。エラーの詳細は$errの配列の中になんか情報がある事を想定
13 return false;
14 }
15 // 問題がなかったぽい
16 return true;
17}
18
1920
21protected function validate_hoge($err)
22{
23 // 項目hogeに関するvalidate
24}
25
26// 以下略
なんていう書き方をイメージしますかね。ざっくりとは。
あとはまぁ「修正が楽にできる」ように、なので、色々な考え方があると思うので。
色々と試してみて「楽だなぁ、と思った」方法で進めてみると、よいように思われます。
上述、ざっくりとしか書いていないので。
「興味があるからもうちょっと詳しく!!」とかありましたら、コメントなどいただければ、時間があるときに、ですが、返信などできるかと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/22 10:45
退会済みユーザー
2018/05/22 13:10
2018/05/23 01:56