MVC: переменные, используемые только для регистрации пользователя. Размещено в помощнике контроллера или модели?

Я оказался в серой области, очистив мой метод «Регистрация» в своем 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» просто вызывал в начале своей процедуры.

Но потом в моей голове появился переключатель.

Поскольку эта информация относится к модели пользователя, ее следует просто разместить в модели пользователя?

Но потом другая сторона моей головы вернулась.

Да, это относится, но используется только для регистрации, и поэтому полезно здесь только в контроллере.

Какая сторона моей головы ошибается? Любые рекомендации будут очень полезны и оценены. Спасибо.

Я бы создал метод 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 } } }