nepster-web
@nepster-web

Как уменьшить связанность компонентов?

Проектирую приложение. Есть следующие понятия:
- компоненты
- модули
- ядро

У меня возникла следующая дилема:
Есть компонент auth, jwt и модуль User. Дело в том, что мне нужно произвести аутентификацию пользователя по логину и паролю (отвечает компонент auth), выдать пользователю jwt токен (при этом сделав все нужные записи в базу, компонент jwt) ну и собственно воспользоваться сущностью User и репозиторием из модуля User.

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

К примеру как будет выглядеть компонент аутентификация:
public function attempt(CredentialsDTO $credentials)
    {
        $username = $credentials->getUsername();
        $password = $credentials->getPassword();

        if ($passwordHash = $this->userRepository->findPasswordHashByUsername($username)) {
            if ($this->hasher->check($password, $passwordHash)) {
                 $user = $this->userRepository->findByUsername($username);
                
                // TODO: сгенерировать jwt токен 
                
            }
        }
       
        return false;
    }


Как получается компоненту auth нужна сущность User, репозиторий, и еще компонент jwt для генерации токена.
Как бы правильно уйти от этой связанности ?
  • Вопрос задан
  • 241 просмотр
Пригласить эксперта
Ответы на вопрос 1
@shagguboy
передавать всё нужное для работы класса ил в конструктор, или в метод, или насаживать через сеттеры. классический Inversion of control
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 10:21
1200 руб./в час
26 апр. 2024, в 10:10
1000 руб./за проект