MVC:仅用于用户注册的变量。放在Controller helper或Model中?

时间:2011-06-09 23:55:14

标签: php model-view-controller model controller

我在MVC中清理我的“注册”方法时发现自己处于灰色区域。

快速背景:我创建了与特定任务相关联的值数组。 例如:

$field_arr //array of all the values from the register-form.
$user_arr //array of values needed to create a new user.
$required_arr //array of all values that are required for sign up.
$values_arr //array that holds all the values for the items in the multiple arrays.

等...等...

首先,我开始通过将这些变量声明/填充块放在控制器中的辅助函数中来重新组织我的代码,“Register”控制器方法将在其例程的开头调用它。

然后我脑子里开了一个开关。

  

由于此信息涉及到   用户模型不应该只是放置   在用户模型中?

然后我的另一边回来了。

  

是的,它确实相关,但仅用于   注册,因此   仅在控制器中有用。

我的哪一方错了?任何指导都会非常有帮助和赞赏。 谢谢。

1 个答案:

答案 0 :(得分:1)

我会在您的User模型中创建一个register方法,并从控制器传递所需的信息,因为这是应用程序中处理用户输入的部分。重用模型往往不仅仅是重用控制器,因此通过这样做,您可以在将来的项目中节省一些时间(只需复制用户模型。)

另一个好处是您现在可以在应用程序的多个点使用此注册逻辑。当然,用户注册并不是最好的例子,但我希望你能看到它在其他情况下如何有用。

当我发现自己处于类似情况时,我喜欢记住的一句话是“Skinny controller,fat model”。尽量保持控制器的纤薄,并随意增加这些模型! :)

编辑:这里有一些伪代码可以帮助解释我的意思......

class RegistrationController {
  function register() {
      // Sanitizing your data here would be a good idea
      $fieldArr = $_POST['data_from_your_form']; 

      $user = new User();
      $result = $user->register($fieldArr);

      if ($result) {
          // User successfully reg'd
      } else {
          // Oops! Problem registering user
      }
  }  
}