MVC: переменные, используемые только для регистрации пользователей. Поместить в помощник контроллера или модель? - PullRequest
1 голос
/ 10 июня 2011

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

1 голос
/ 10 июня 2011

Я бы создал register метод в вашей модели User и передал бы ему необходимую информацию из контроллера, так как это часть вашего приложения, которая обрабатывает пользовательский ввод. Повторное использование моделей имеет тенденцию происходить чаще, чем повторное использование контроллеров, поэтому, делая это, вы потенциально можете сэкономить некоторое время в будущем проекте (просто скопируйте модель пользователя).

Еще одним преимуществом является то, что теперь вы можете использовать эту логику регистрации из нескольких точек в вашем приложении. Конечно, регистрация пользователей не лучший пример для этого, но я надеюсь, вы понимаете, как это может быть полезно в других ситуациях.

Фраза, которую мне нравится вспоминать, когда я нахожусь в подобной ситуации, это "Тощий контроллер, толстая модель". Старайтесь держать свои контроллеры стройными и не стесняйтесь откармливать эти модели! :)

Редактировать : Вот некоторый псевдокод, чтобы помочь объяснить, что я имею в виду ...

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
      }
  }  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...