0

我正在尝试应用“胖模型”原理,但我不知道如何正确地在“胖模型”和控制器之间进行交互。

假设我们有Model_User,Controller_UserModel_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