さて、DomainObject/Modelとオブジェクトを呼び出し$user
まし$userDAO
た。
これまで読んだことから、$user
オブジェクトのフェッチなどのCRUD操作を実行する必要がある場合は、次のようにします。
$user = $userDAO->fetchById($userId);
そしてそれは私のオブジェクトを返し$user
ます。
どうやらDomainObjectはDAOオブジェクトが存在することを認識していないはずであり、その逆も同様ですが、ユーザーが登録していて$user->register()
メソッドを実行した場合はどうなりますか?
$user->register($firstName, $lastName, $emailAddress, $username, $password etc.);
その方法のどこかで、選択したユーザー名がすでに使用されており、電子メールアドレスと同じであるかどうかを確認する必要があります。
これを行うことを考えることができる唯一の方法は、$userDAO
オブジェクト内に$user
オブジェクトのインスタンスを持ち、次のような検証を行うことです。
if($this->userDAO->isUsernameTaken($username)) {
// the username is already in use
}
else {
// continue on
}
しかし、それはDomainObjectがデータベースのものについて知らないはずであるという規則を破るでしょう、そしてその逆も同様ですが、すべてのクエリがDAOオブジェクトにあるので、DomainObjectはデータベースのものについて実際には知らないと思っていました。オブジェクトですが、そのオブジェクトで何が起こっているのかを明示的には知りません。私は正しいですか、それとも間違っていますか?
間違った方法で実行している$user->register()
場合、データソースにアクセスする必要があるデータベースクエリを呼び出す必要があるようなメソッドを実行する方法を教えてください。ただし、DomainObject / Modelはデータソースについて知ることができないため、専門家は言う?
私は今日Googleのページ番号に行きましたが、行く必要はないと思っていましたが、実際に何をすべきかについての非常に堅実な例を見つけることができず、すべてが遅くなっているために怒り始めています。
どんな助けでもいただければ幸いです。ありがとう。