Моя цель - иметь одинаковые зависимости в разных Сервисах.
Мне это нужно, потому что в некоторых случаях я использую одну и ту же сущность для разных Сервисов. Пример:
...
$user = $this->userRepository->find(123);
$this->userService->doSomeWithUserRepository(); # here using $user entity
$this->commentService->doSomeWithUserRepository(); # and ! here too the same
...
Вот пример того, как я добился этого сейчас:
public function __construct(
UserRepositoryInterface $userRepository,
FileRepositoryInterface $fileRepository,
CommentRepositoryInterface $commentRepository
) {
$this->userRepository = $userRepository;
$this->fileRepository = $fileRepository;
$this->commentRepository = $commentRepository;
$this->userService = new UserService(
$userRepository, $fileRepository, $commentRepository
);
$this->commentService = new CommentService(
$userRepository, $fileRepository, $commentRepository
);
$this->middleware(...
...
}
Итак, как вы можете видеть, при таком подходе конструктор может быть действительно большим и некрасивым , если у каждой службы будет много зависимостей.
Я хочу добиться чего-то вроде этого:
public function __construct(
UserRepositoryInterface $userRepository,
FileRepositoryInterface $fileRepository,
CommentRepositoryInterface $commentRepository
UserService $userService,
CommentService $commentService
) {
$this->userRepository = $userRepository;
$this->fileRepository = $fileRepository;
$this->commentRepository = $commentRepository;
$this->userService = $userService;
$this->commentService = $commentService;
$this->middleware(...
...
}
Я буду рад выслушать любую справку / подсказку / замечание. Может я неправильно использую logi c или что-то в этом роде?
Спасибо