с проблемой, где у меня есть 2 сервиса, которые нужны друг другу. Объявляя их в конструкторе через DI (laravel), они каждый раз зовут друг друга, чем, само собой, создают бесконечный цикл вызовов
У меня есть DeliveryService и CourierService, они нужны друг другу. Как можно избежать этого?
Вручную может как то определить
В твоём случае есть сервис доставки и сервис курьера. Посмотри на проблему с точки зрения иерархии для начала. Явно, что курьер зависит от доставки, а не наоборот. Следовательно, не надо курьеру в конструктор передавать доставку. Это выглядит как ошибка домена.
Да, я согласен. Но тут встает другой вопрос. 1. Есть метод в сервисе курьеров notifyCouriers, который разруливает отправление уведомлений курьерам. Есть метод в сервисе доставки createDelivery, который создает доставку. При создании доставки нам надо отправить уведомление курьерам, т.е. домен доставки должен знать про курьеров. 2. Есть метод в сервисе курьеров createDeliveryEvent, который разруливает какое-либо действия курьера и ему нужно управлять доставкой, т.е., например, сменить статус доставки, поэтому домен курьеров должен знать про доставку. Как вот тут быть?
по второму пункту. курьеру не надо знать про всю доставку. ему надо тока знать где посмотреть доставки на седня, и где отчитаться о проделанной работе. У тебя там походу какой-то GOD объект
Обсуждают сегодня