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