我在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”控制器方法将在其例程的开头调用它。
然后我脑子里开了一个开关。
由于此信息涉及到 用户模型不应该只是放置 在用户模型中?
然后我的另一边回来了。
是的,它确实相关,但仅用于 注册,因此 仅在控制器中有用。
我的哪一方错了?任何指导都会非常有帮助和赞赏。 谢谢。
答案 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
}
}
}