skwee
Новичок
Хотелось бы узнать кто за что отвечает.
Рассмотрим данный пример (не сферический вакууме):
Регистрация пользователя.
Ест Контроллер, как то так:
тут есть 2 магических функции:
1. MagicValid + MagicErrors - как понятно из имени это валидация формы. Кто должен этим заниматься? Если форму валидирует контроллер, то при простой форме регистрации (username + email + password + agree to terms) контроллер может раздуться. И с другой стороны, если пользователь хочет поменять юзернейм потом, то в контроллере ChangeUsernameController будет та же валидация что и в регистер. Логично ли создать некий слой валидации? Как глубоко он должен валидировать формы (duplicate email в бд входить в его ответственность или нет, если нет то в чью да? модель?)?
2. MagicUserCreate - Собственно создания пользователя. Это не тупо insert into а в данном случае надо создать юзера в бд, создать Activation code, приготовить и отправить мыло с данным кодом, авторезировать юзера. Не хочется засорять модель юзера и делать что то вроде:
(там есть проверка ошибок)
Как быть в данном случае? Кто должен отвечать за создания\модификацию\удаления ресурсов? Есть ли смысл вводить слой Action-ов или Сервисов? А что тогда делать с простыми акшенамы вроде user edit где все что надо сделать это проверить дату (смотри пунки 1 - валидация) и сделать update в базе.
Спасибо за ранее!
Рассмотрим данный пример (не сферический вакууме):
Регистрация пользователя.
Ест Контроллер, как то так:
PHP:
class RegisterController extends AbstractController {
public function run() {
if($this->getRequest()->isPost()) {
if(MagicValid($this->getRequest()) {
MagicUserCreate($this->getReqest());
} else {
$this->getView()->errors = MagicErrors();
}
}
$this->getView()->a = $a;
return $this->getView();
}
}
1. MagicValid + MagicErrors - как понятно из имени это валидация формы. Кто должен этим заниматься? Если форму валидирует контроллер, то при простой форме регистрации (username + email + password + agree to terms) контроллер может раздуться. И с другой стороны, если пользователь хочет поменять юзернейм потом, то в контроллере ChangeUsernameController будет та же валидация что и в регистер. Логично ли создать некий слой валидации? Как глубоко он должен валидировать формы (duplicate email в бд входить в его ответственность или нет, если нет то в чью да? модель?)?
2. MagicUserCreate - Собственно создания пользователя. Это не тупо insert into а в данном случае надо создать юзера в бд, создать Activation code, приготовить и отправить мыло с данным кодом, авторезировать юзера. Не хочется засорять модель юзера и делать что то вроде:
PHP:
class UserModel extends Model{
public function create($data){
$userid = $this->insert($data);
$activationCodesTable = new ActivationCodesModel();
$code = $activationCodesTable->create($userid);
$email = new Email('activationCode.phtml', array('code'=>$code), $data['email']);
$email->send();
CurrentUser::instance()->authenticate($data['email'], $data['password']);
}
}
Как быть в данном случае? Кто должен отвечать за создания\модификацию\удаления ресурсов? Есть ли смысл вводить слой Action-ов или Сервисов? А что тогда делать с простыми акшенамы вроде user edit где все что надо сделать это проверить дату (смотри пунки 1 - валидация) и сделать update в базе.
Спасибо за ранее!