Проблема: у класса появляется очень много зависимостей. `class OrderService { protected $mailer; protected $logger; protected $repository;

public function __construct($mailer, $logger, $repository) { $this->mailer = $mailer; $this->logger = $logger; $this->repository = $repository; }

// ... } Проблема усугубляется, когда у исходного класса появляется целая куча наследников. Одно из решений, чтобы немного упростить работу: `class Dependencies { public $mailer; public $logger; public $repository;

public function __construct($mailer, $logger, $repository) { $this->mailer = $mailer; $this->logger = $logger; $this->repository = $repository; } }

class OrderService { protected $deps;

public function __construct(Dependencies $deps) { $this->deps = $deps; }

// ... } В симфони приложении для тех же целей можно использовать https://symfony.com/doc/current/service_container/service_subscribers_locators.html#the-autowirelocator-attribute

В golang похожий подход использует dig. https://pkg.go.dev/go.uber.org/dig#hdr-Parameter_Objects

Резюме: Имхо, как временное решение - пойдёт. Но пахнет увеличивающимся техническим долгом и заметанием мусора под ковёр. Если класс и его иерархия начали тянуть по 20 зависимостей - надо начинать декомпозицию в независимые сервисы.``