0

「ファットモデル」の原則を適用しようとしていますが、「ファットモデル」とコントローラーを正しく相互作用させる方法がわかりません。

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インスタンスを返し、成功した場合は整数またはその他の例外を返します。私の質問は:モデルがこのようにエラーを返すのは正しいですか?ベストプラクティスは何ですか?この方法は、将来、お尻の痛みになる可能性がありますか?

ありがとうございました!

4

0 に答える 0