Духовность™
Продвинутый новичок
2 назначения у объекта - правильно или нет?
В рамках MVC надо хочу сделать свой первый сервис, позволяющий пользователям восстановить их пароль в системе, указав свой логин или email. Я решил сделать класс Getpassword который инкапсулирует логику сервиса. В контроллере обрабатывающего запрос пишу:
в общем, тут всё наверно ясно и стандартно - на почту отправляется уникальная ссылка, пройдя по которой пользователь попадет на другой скрипт, который должен проверить секретный хэш из ссылки и в случае положительного результата выслать пользователю новый пароль.
Меня смущает вот что - Getpassword я собираюсь использовать как для отправки письма и всей остальной логикой, присущей шагу 1, так и для заключительного шага 2, когда проверяется хэш-код из ссылки. Меня это смущает, ведь объект должен отвечать за одно какое-то действие, иметь одно назначение.
Но в тоже время разделять Getpassword на два класса совсем не уместно.. как быть?
В рамках MVC надо хочу сделать свой первый сервис, позволяющий пользователям восстановить их пароль в системе, указав свой логин или email. Я решил сделать класс Getpassword который инкапсулирует логику сервиса. В контроллере обрабатывающего запрос пишу:
PHP:
// тут проверки на существование логина или email-адреса из POST
// если найден пользователь с такими данными,
// получили объект пользователя
$user;
// обертка над mail
$mail = new Base_Mail();
// указываем from-адрес ([email protected])
$mail->setFrom(Base_Registry::getInstance()->config['robot_email_adress']);
// указываем reply-адрес ([email protected])
$mail->setReplyTo(Base_Registry::getInstance()->config['robot_email_adress']);
// заголовок письма
$mail->setHeader('Восстановление забытого пароля на сайте '.$_SERVER['HTTP_HOST']);
// указываем путь к шаблону письма
$mail->setTemplate($this->getTemplateFilePath('FrontendGetpasswordSendTest'));
try
{
$service = new Getpassword();
// как вам такое API кстати?
$service->setUser($user)-> // указываем для сервиса пользователя, который хочет восстановить пароль
setMail($mail)-> // объект письма
sendTest(); // отправляем письмо, совершаем логику сервиса Getpassword
}
catch (Exception $e){..}
Меня смущает вот что - Getpassword я собираюсь использовать как для отправки письма и всей остальной логикой, присущей шагу 1, так и для заключительного шага 2, когда проверяется хэш-код из ссылки. Меня это смущает, ведь объект должен отвечать за одно какое-то действие, иметь одно назначение.
Но в тоже время разделять Getpassword на два класса совсем не уместно.. как быть?