「ファットモデル」の原則を適用しようとしていますが、「ファットモデル」とコントローラーを正しく相互作用させる方法がわかりません。
Model_User
、、Controller_User
およびModel_User_Resource
(Dbとの相互作用)があると仮定しましょう。
class Model_User
{
public function register($data, $sendRegistrationEmail = false) {
//checking ACL rules
if (!$this->getAcl()->checkAcl('registration')) {
throw new Acl_Exception();
}
//validating form
$F = new Form_User_Registration($data);
if (!$F->isValid()) {
return $F;
}
//inserting data and returning new user's id
$Resource = new Model_User_Resource();
$userId = $Resource->insert($data);
return $userId;
}
}
class Controller_User
{
public function registrationAction() {
$post = $this->getRequest->getPost();
$Model = new Model_User();
$result = $Model->register($post);
if ($result instanceof Form_User_Registration) {
//model has returned Form instance
return new Response(json_encode($result->getErrors()));
}
//registration was successful and we're doing some kind of redirect here, I suppose
}
}
では、このコードの何が問題になっていますか?モデルは次のようになります。Acl例外をスローし、エラーが発生した場合はFormインスタンスを返し、成功した場合は整数またはその他の例外を返します。私の質問は:モデルがこのようにエラーを返すのは正しいですか?ベストプラクティスは何ですか?この方法は、将来、お尻の痛みになる可能性がありますか?
ありがとうございました!