“胖模型”与控制器之间的相互作用

时间:2012-10-31 12:50:57

标签: php model-view-controller

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

我们假设我们有Model_UserController_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实例,如果成功则返回整数或任何其他异常。 我的问题是:模型以这种方式返回错误是否正确?什么是最佳做法?这可能是将来痛苦的屁股吗?

谢谢!

0 个答案:

没有答案