Привет гуру, нужна твоя помощь! Изучая принцип "ТТУК - Толстые тупые уродливые контроллеры" решил сделать все контроллеры с помощью сервисов. Тут возникла проблема.
Пример: предположим процесс входа в систему в теории должен выглядеть так
в контроллере$auth_service = new AuthService();
try {
$auth_service->auth($email, $password);
} catch (ServiceException $e) {
switch ($e->getCode()) {
case ServiceException::NOT_FOUND_EMAIL:
return;
case ServiceException::NOT_CORRECT_PASSWORD:
return;
default:
throw $e;
}
}
в сервисеpublic function auth(string $email, string $password)
{
if ($this->isEmailNotExists($email)) {
throw new ServiceException('Email not exists', ServiceException::NOT_FOUND_EMAIL);
}
$profile = Profile::firstFromEmail($email);
if ($this->isPasswordNotCorrect($profile, $password)) {
throw new ServiceException('Password not correct', ServiceException::NOT_CORRECT_PASSWORD);
}
/* логика с сессиями */
}
Однако не совсем понятно, было бы верным делать исключения в контроллере или все же сначала спросить сервис о например существовании мыла?
Тогда как если у меня сейчас все правильно то получается если вдруг где то еще, по другому, понадобится реализовать вход в систему то придется создавать отдельный метод someAuth где например не нужны сессии и требуется отправить сообщение о входе.
Но если я делаю не правильно и лучше проводить проверку перед началом работы с сервисом то получается я не отхожу далеко от
ТТУК.