###前提・実現したいこと
MySQLであるWEBサービスを作っています。
今までは処理も永続化も一つのクラスに書いていたのですが、リポジトリパターンで分けるといいみたいなので分割しました。
しかし、クラス設計で悩んでいます。
以下のような場合、どのようにクラス設計を行うのが正しいのでしょうか?
ここでは、重複禁止のメールアドレスカラム(mail)があるとします。
###分割前のソースコード
PHP
1/** 2 * メールアドレスを変更します 3 * @param mysqli $sql メールアドレス 4 * @param string $mail メールアドレス 5 * 6 * @throws Exception 既に登録されている 7 */ 8public function setMail($sql,$mail){ 9 //引数チェック省略 10 11 //DBのhogeテーブルのmailカラムの更新 12 $stmt = $sql->prepare("UPDATE hoge SET mail=?"); 13 $stmt->bind_param("s", $mail); 14 $stmt->execute(); 15 16 //もし1062エラー(重複データの格納)なら例外を投げる 17 if ($sql->errno === 1062) { 18 throw new Exception("このメールアドレスは登録済みです。"); 19 } 20 21 //重複でなければセット 22 $this->mail=$mail; 23}
###困っていること
このクラスをリポジトリパターンで分割する場合、重複チェック(1062エラーチェック)は、どう行うのが正しいのか?
今考えているのは、setMall()関数では重複チェックを行わずに、引数チェックと、フィールドへの代入のみを行い、Repositoryクラスの永続化関数で重複チェックを行う事です。
回答1件
あなたの回答
tips
プレビュー