it新人のエンジニアです。お手柔らかにお願いします。
###前提・実現したいこと
①共通処理を関数化したいです。
②上記にあたり神クラスを使っていいのかがわかりません。
全体の流れ
電話番号やメールアドレスやホームページアドレスに対し、下記のような正規表現をかけるプログラムを書きました。しかし、正規表現は随所で使われており、ライブラリに神クラスを作りそこにstaticメソッドとしてまとめたいなと考えました。その関数化の方法がいまいちわかりません。(そもそも神クラスはダメだなどという記事をよく見ますが・・・)
それぞれの正規表現で、マッチした場合はそのマッチした値を、マッチしなかった場合はエラー文を$err_data配列に格納しその後の処理は飛ばし、次のループに行くようにしています。
このような書き方を見て、こうするべきという書き方などあれば、ご教授いただければ幸いです。
###該当のソースコード
php
1 2 // csvファイル読み込み処理(略) 3 4 foreach ($file as $key => $row) { 5 list( 6 $company_id, 7 $employment_site_id, 8 $company_name, 9 $phone_number, 10 $mail_address, 11 $home_page_url, 12 ) = $row; 13 14 // 電話番号の存在確認 15 if ($phone_number) { 16 // 電話番号は正しい形式か? 17 if (preg_match('/([0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4})/', $phone_number, $match)) { 18 $phone_number = $match[0]; 19 } else { 20 $err_data[] = "会社ID ${company_id} の電話番号 ${phone_number} の形式が違います。確認してください"; 21 continue; 22 } 23 } 24 25 // メールアドレスの存在確認 26 if ($mail_address) { 27 // メールアドレスは正しい形式か? 28 if (preg_match('/[\w.\-]+@[\w\-]+.[\w.\-]+/', $mail_address, $match)) { 29 $mail_address = $match[0]; 30 } else { 31 $err_data[] = "会社ID ${company_id} のメールアドレス ${mail_address} の形式が違います。確認してください"; 32 continue; 33 } 34 } 35 36 // ホームページアドレスの存在確認 37 if ($home_page_url) { 38 // ホームページアドレスが正しい形式か? 39 if (preg_match('/(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?/?/i', $home_page_url, $match)) { 40 $home_page_url = $match[0]; 41 } else { 42 $err_data[] = "会社ID ${company_id} のホームページアドレス ${home_page_url} の形式が違います。確認してください"; 43 continue; 44 } 45 } 46 47 //DBインサート処理(略) 48
###補足情報(言語/FW/ツール等のバージョンなど)
開発環境:Vagrant + VirtualBox / Homestead
本番環境:CentOS7 nginx MySQL PHP7.2
言語:PHP 7.2.3 (cli)(NTS)
フレームワーク:Laravel5.5 (LTS)
サーバー:nginx
DB:MySQL
回答4件
あなたの回答
tips
プレビュー