我正在尝试应用“胖模型”原则,但我不知道如何正确地在“胖模型”和控制器之间进行交互。
我们假设我们有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实例,如果成功则返回整数或任何其他异常。 我的问题是:模型以这种方式返回错误是否正确?什么是最佳做法?这可能是将来痛苦的屁股吗?
谢谢!